2014-12-02 3 views
-1
public class Setting extends Activity implements OnClickListener { 

    ListView listView1; 
    ImageView backbutton; 
    String Url = "http://182.71.212.110:8083/api/values/userdetails"; 
    String Id; 
    String Designation; 
    String EmployeeName; 
    JSONArray _jarray; 

    DataModel datamodel = new DataModel(); 
    ArrayList<DataModel> list = new ArrayList<DataModel>(); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(R.layout.setting); 
     listView1 = (ListView) findViewById(R.id.listView1); 
     backbutton = (ImageView) findViewById(R.id.backbutton); 
     backbutton.setOnClickListener(this); 

     new GetUserdetail().execute(); 

    } 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     if (v.getId() == R.id.backbutton) { 
      finish(); 
     } 
    } 

    class GetUserdetail extends AsyncTask<Void, Void, Void> { 

     @Override 
     protected void onPreExecute() { 
      // TODO Auto-generated method stub 
      super.onPreExecute(); 
     } 

     @Override 
     protected Void doInBackground(Void... params) { 
      // TODO Auto-generated method stub 
      try { 
       String json = HttpHitter.ExecuteData(Url); 
       _jarray = new JSONArray(json); 
       System.out.println("_jarray" + _jarray); 

       for (int i = 0; i <= _jarray.length(); i++) { 
        JSONObject _obj = _jarray.getJSONObject(i); 

        if (Id != null) { 
         datamodel.setId(_obj.getString("Id")); 
        } 
        if (Designation != null) { 
         datamodel.setDesignation(_obj.getString("Designation")); 
        } 
        if (EmployeeName != null) { 
         datamodel.setEmployeeName(_obj 
           .getString("EmployeeName")); 
        } 

        list.add(datamodel); 
       } 

      } catch (JSONException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      return null; 
     } 

     @Override 
     protected void onPostExecute(Void result) { 
      // TODO Auto-generated method stub 
      super.onPostExecute(result); 

      CustomList adapter = new CustomList(Setting.this, list); 
      listView1.setAdapter(adapter); 

     } 
    } 

} 



public class DataModel implements Parcelable { 
    private String Id = ""; 

    private String Designation = ""; 

    private String EmployeeName = ""; 

    public String getId() { 
     return Id; 
    } 

    public void setId(String id) { 
     this.Id = id; 
    } 

    public String getDesignation() { 
     return Designation; 
    } 

    public void setDesignation(String designation) { 
     this.Designation = designation; 
    } 

    public String getEmployeeName() { 
     return EmployeeName; 
    } 

    public void setEmployeeName(String employeeName) { 
     this.EmployeeName = employeeName; 
    } 

    @Override 
    public int describeContents() { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

    public DataModel() { 
     // TODO Auto-generated constructor stub 
    } 

    public DataModel(Parcel in) { 
     Id = in.readString(); 
     EmployeeName = in.readString(); 
     Designation = in.readString(); 

    } 

    @Override 
    public void writeToParcel(Parcel dest, int flags) { 
     // TODO Auto-generated method stub 
     dest.writeString(Id); 
     dest.writeString(EmployeeName); 
     dest.writeString(Designation); 
    } 

} 


public class CustomList extends BaseAdapter { 
    Context context; 
    private ArrayList<DataModel> arrModel; 

    public CustomList(Context context, ArrayList<DataModel> arrModel) { 
     this.context = context; 
     this.arrModel = arrModel; 
    } 

    /* private view holder class */ 
    private class ViewHolder { 

     TextView txtTitle; 
     TextView txtDesc; 

     ImageView locationimage; 
     ImageView roleimageview; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder holder = null; 

     LayoutInflater mInflater = (LayoutInflater) context 
       .getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
     if (convertView == null) { 
      convertView = mInflater.inflate(R.layout.settingrowitem, null); 
      holder = new ViewHolder(); 
      holder.txtDesc = (TextView) convertView 
        .findViewById(R.id.rowcontact_txtName); 
      holder.txtTitle = (TextView) convertView 
        .findViewById(R.id.rowcontact_txtrole); 

      holder.locationimage = (ImageView) convertView 
        .findViewById(R.id.imageView1); 
      holder.roleimageview = (ImageView) convertView 
        .findViewById(R.id.imageView2); 

      convertView.setTag(holder); 
     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 

     holder.txtDesc.setText(arrModel.get(position).getEmployeeName()); 
     holder.txtTitle.setText(arrModel.get(position).getDesignation()); 

     if (position % 2 == 0) { 
      convertView.setBackgroundColor(Color.parseColor("#ffffff")); 
     } 

     else { 
      convertView.setBackgroundColor(Color.parseColor("#f5f6f1")); 
     } 

     return convertView; 
    } 

    @Override 
    public int getCount() { 
     return arrModel.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return arrModel.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

} 

Есть три класса, которые я должен использовать для синтаксического анализа данных из веба-службы и и пытаемся напечатать в Listview .I Умеет JSon синтаксический анализ и получение данных с сервера insetting.javaclass:Blank ListView получить в андроиде

list.add(datamodel); 

и связать это в списке в onpostexcute метода:

CustomList adapter = new CustomList(Setting.this, list); 
      listView1.setAdapter(adapter); 

с помощью этого я пытаюсь напечатать данные в пункте списка следует, но я получаю пустое значение в каждом элементе в то время как количество Json составляет 49 я получаю, что 49, но getDesignation и getEmploye. Я получаю пустое значение, пожалуйста, проверьте и скажите мне, где я делаю ошибку. Я пробовал многое не в состоянии получить. Распечатайте эту ценность, пожалуйста, попробуйте меня.

ответ

0

Где вы inistailizind Id, Обозначение и EmployeeName, он будет иметь нулевое значение. поэтому doInBackground не добавит какой-либо datamodel. снимите флажок

class GetUserdetail extends AsyncTask<Void, Void, Void> { 

    @Override 
    protected void onPreExecute() { 
     // TODO Auto-generated method stub 
     super.onPreExecute(); 
    } 

    @Override 
    protected Void doInBackground(Void... params) { 
     // TODO Auto-generated method stub 
     try { 
      String json = HttpHitter.ExecuteData(Url); 
      _jarray = new JSONArray(json); 
      System.out.println("_jarray" + _jarray); 

      for (int i = 0; i <= _jarray.length(); i++) { 
       DataModel datamodel = new DataModel(); 
       JSONObject _obj = _jarray.getJSONObject(i); 
       datamodel.setId(_obj.getString("Id")); 
       datamodel.setDesignation(_obj.getString("Designation")); 
       datamodel.setEmployeeName(_obj.getString("EmployeeName")); 
       list.add(datamodel); 
      } 

     } catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     return null; 
    } 

    @Override 
    protected void onPostExecute(Void result) { 
     // TODO Auto-generated method stub 
     super.onPostExecute(result); 

     CustomList adapter = new CustomList(Setting.this, list); 
     listView1.setAdapter(adapter); 

    } 
} 
0

Инициализировать модель внутри цикла for и попробуйте один раз.

+0

все еще получаю пустое значение – Edge

+0

i dont why this issue is coming – Edge

+0

http://pastie.org/9755844 см. Это я использую этот код – Edge

0

Чтобы определить изменения в список вашего пункта, вы должны позвонить adapter.notifyDataSetChanged(); называют его перед установкой адаптера в виде списка.

Смежные вопросы