2015-05-07 54 views
2

我有一個ListView和自定義適配器。問題是我沒有看到列表視圖和數據,但只有一個白頁。使用ListView和自定義適配器設置數據

在該片段中,我有:

 private ArrayList<HashMap<String, Object>> mlist = new ArrayList<HashMap<String, Object>>(); 

    ... 

for (int i = 1; i < array.length(); i++) { 
        HashMap<String, Object> map = new HashMap<String, Object>(); 

        Gson gson = new Gson(); 


        Avv mAvv = gson.fromJson(String.valueOf(array.getJSONObject(i)), Avv.class); 

        map.put("id", String.valueOf(i)); 
        map.put("Name", mAvv.getNome()); 
        map.put("Surname", mAvv.getCognome()); 
        map.put("Title", mAvv.getTitolo()); 
        map.put("Info", mAvv.getTesto()); 


        mlist.add(map); 
       } 

... 


    CustomAdapter mAdapter = new CustomAdapter(getActivity(),mlist); 
    list.setAdapter(mAdapter); 

而在CustomAdapter我有這樣的:

public class CustomAdapter extends BaseAdapter { 


     private final Activity context; 
     private LayoutInflater mInflater; 
     ArrayList<HashMap<String, Object>> mlist; 

     public CustomAdapter(Activity context,ArrayList<HashMap<String, Object>> mlist){ 

      this.context = context; 
      this.mlist=mlist; 
      mInflater = context.getLayoutInflater(); 

     } 
     public class ViewHolder { 

      public ImageButton mImageButton; 
      public TextView mTitleView; 
      public TextView mNomeView; 
      public TextView mCognomeView; 
      public TextView mInfoView; 

     } 


     @Override 
     public int getCount() { 
      return 0; 
     } 

     @Override 
     public Object getItem(int position) { 

      if (mlist != null && position >= 0 && position < getCount()) { 
       return mlist.get(position); 
      } 
      return null; 
     } 

     @Override 
     public long getItemId(int position) { 

      return position; 
     } 

     @Override 
     public void notifyDataSetChanged() { 
      super.notifyDataSetChanged(); 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 

      View view = convertView; 
      ViewHolder viewHolder; 

      if (view == null) { 

       view = mInflater.inflate(R.layout.item_list_avvisi, null); 
       viewHolder = new ViewHolder(); 

       viewHolder.mImageButton = (ImageButton) view.findViewById(R.id.imageButton); 
       viewHolder.mCognomeView = (TextView) view.findViewById(R.id.surname); 
       viewHolder.mNomeView = (TextView) view.findViewById(R.id.name); 
       viewHolder.mTitleView = (TextView) view.findViewById(R.id.title); 
       viewHolder.mInfoView = (TextView) view.findViewById(R.id.info); 


       view.setTag(viewHolder); 

      } 
      else { 
       viewHolder = (ViewHolder) view.getTag(); 
      } 

      setData(viewHolder, mlist, position); 

      return view; 
     } 

     private void setData(ViewHolder viewHolder, ArrayList<HashMap<String, Object>> mlist,int position) { 


      viewHolder.mCognomeView.setText(mlist.get(position).get("Surname").toString()); 
    viewHolder.mNomeView.setText(mlist.get(position).get("Name").toString()); 
      viewHolder.mTitleView.setText(mlist.get(position).get("Title").toString()); 
      viewHolder.mInfoView.setText(mlist.get(position).get("Info").toString()); 


     } 
    } 

在那裏我錯了嗎?

UPDATE:

感謝,如果我想設置onClickListener上的ImageButton我該怎麼..我試着用:

@Override 
      public View getView(int position, View convertView, ViewGroup parent) { 

... 
    viewHolder.mImageButton.setClickable(true); 
       viewHolder.mImageButton.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 


         Intent shareIntent = new Intent(); 
         shareIntent.setAction(Intent.ACTION_SEND); 

         shareIntent.putExtra(Intent.EXTRA_TEXT, (String) viewHolder.mNomeView.getText().toString() 
           ); 
         shareIntent.setType("text/plain"); 
         context.startActivity(shareIntent); 


        } 
       }); 

但問題是,當我點擊,例如第一項,viewHolder.mNomeView.getText()。toString()它返回第二項的字符串..爲什麼?

回答

3

問題是在你的getCount()方法

@Override 
    public int getCount() { 
     return 0; 
    } 

將其更改爲:

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

UPDATE

你的第二個問題:
試試這個:

viewHolder.mImageButton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 


        Intent shareIntent = new Intent(); 
        shareIntent.setAction(Intent.ACTION_SEND); 

        shareIntent.putExtra(Intent.EXTRA_TEXT, (String) mlist.get(position).get("Name").toString() 
          ); 
        shareIntent.setType("text/plain"); 
        context.startActivity(shareIntent); 


       } 
      }); 
+0

你能在問題中看到我的更新嗎? –

+0

你應該在另一個問題中提出你的第二個問題。但是我會以任何方式回答。 – MHP

相關問題