2011-12-15 77 views
1

我试图从多个项目listview中获取数据,但当我尝试onListItemClick获取时,我不断收到错误。从多项目ListView获取数据?

这似乎是要我创建方法时:

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; 
     } 
    } 
+0

你得到的错误是什么? – 2011-12-15 16:45:08

+0

这是要求我为getTitle创建一个方法...当我有一个。 `i.putExtra(“title”,this.getItem(position).getTitle());` – user961389 2011-12-15 16:55:15

回答

1

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

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

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