从多个项目ListView获取数据?

时间:2011-12-15 16:44:06

标签: android listview android-listview

我正在尝试从多项目列表视图中获取数据,但是当我尝试使用onListItemClick时,我一直收到错误。

似乎要求我在以下时间创建方法:

i.putExtra("title", this.getItem(position).getTitle());

被召唤。

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.list);
    mInflater = (LayoutInflater) getSystemService(
    Activity.LAYOUT_INFLATER_SERVICE);
    data = new Vector<RowData>();
    for(int i=0;i<title.length;i++){
    try {
        rd = new RowData(i,title[i],detail[i]);
        } catch (ParseException e) {
            e.printStackTrace();
       }
       data.add(rd);
    }
       CustomAdapter adapter = new CustomAdapter(this, R.layout.list, R.id.title, data);
       setListAdapter(adapter);
       getListView().setTextFilterEnabled(true);
    }


         public void onListItemClick(ListView parent, View v, int position,
        long id) {   


               Intent i = new Intent(this,ShowDetails.class);
              Bundle bundle = new Bundle();
               i.putExtra("title", this.getItem(position).getTitle());
               i.putExtra("title", this.getItem(position).getDetail());
               setResult(ShowDetails.RESULT_OK, i);
               finish();
        }


 private class CustomAdapter extends ArrayAdapter<RowData> {
  public CustomAdapter(Context context, int resource,
                        int textViewResourceId, List<RowData> objects) {               
 super(context, resource, textViewResourceId, objects);
}
      @Override
       public View getView(int position, View convertView, ViewGroup parent) {   
       ViewHolder holder = null;
       TextView title = null;
       TextView detail = null;
       ImageView i11=null;
       RowData rowData= getItem(position);
       if(null == convertView){
            convertView = mInflater.inflate(R.layout.list, null);
            holder = new ViewHolder(convertView);
            convertView.setTag(holder);
 }
             holder = (ViewHolder) convertView.getTag();
             title = holder.gettitle();
             title.setText(rowData.mTitle);
             detail = holder.getdetail();
             detail.setText(rowData.mDetail);                                                     
             i11=holder.getImage();
             i11.setImageResource(imgid[rowData.mId]);
             return convertView;
}
            private class ViewHolder {
            private View mRow;
            private TextView title = null;
            private TextView detail = null;
            private ImageView i11=null; 
            public ViewHolder(View row) {
            mRow = row;
 }
         public TextView gettitle() {
             if(null == title){
                 title = (TextView) mRow.findViewById(R.id.title);
                }
            return title;
         }     
         public TextView getdetail() {
             if(null == detail){
                  detail = (TextView) mRow.findViewById(R.id.detail);
                    }
           return detail;
         }
        public ImageView getImage() {
             if(null == i11){
                  i11 = (ImageView) mRow.findViewById(R.id.img);
                                      }
                return i11;
        }
     }

1 个答案:

答案 0 :(得分:1)

首先,你有gettitle()方法而不是你的适配器中定义的getTitle()。

getTitle()是适配器的一种方法。 getItem(position)返回一个RowData类型的对象,它没有这样的方法。

此外,getTitle()返回一个TextView。您确定要通过Intent或TextView的字符串传递TextView吗?