2013-08-22 23 views
1

我为我的英语不好很抱歉,但这里是我的问题:安卓:要访问一个TextView在viewholder在我mainactivity

我用像ArrayAdapter定制的ListView和创建我ArrayAdapter为在我的主要活动实习生类这样的:

/*This is my Main Activity*/ 
    public class KhassaideActivity extends Activity { 

    ViewHolder holder; 
    KhassaideAdapterbi listadapter ; 
    ListView l ; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     l= (ListView) findViewById(R.id.listDieuzbou); 
     listadapter = new KhassaideAdapterbi(this, R.layout.affichage_khassaide, rowItems); 
     l.setAdapter(listadapter); 
    } 

    /*This is my intern class ArrayAdapter*/ 
    private class KhassaideAdapterbi extends ArrayAdapter<RowItem>{ 

    Context context; 
    public KhassaideAdapterbi(Context context, int resourceId, 
      List<RowItem> items) { 

     super(context, resourceId, items); 
     this.context = context; 
    } 

    public class ViewHolder { 
    ImageView imageView; 
    TextView trad; 
    TextView trans; 
    TextView number; 
} 

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


     RowItem rowItem = getItem(position); 

     LayoutInflater mInflater = (LayoutInflater) context 
       .getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 

     if (convertView == null) { 

holder = new ViewHolder(); 
      convertView = mInflater.inflate(R.layout.affichage_khassaide, null); 

      holder.number = (TextView) convertView.findViewById(R.id.number); 
      holder.trad = (TextView) convertView.findViewById(R.id.traduction); 
      holder.trans = (TextView) convertView.findViewById(R.id.transcription); 
      holder.imageView = (ImageView) convertView.findViewById(R.id.arabe); 
      convertView.setTag(holder); 
     } 
     else 
      holder = (ViewHolder) convertView.getTag(); 

     holder.trad.setText(rowItem.getTitle()); 
     holder.trans.setText(rowItem.getDesc()); 
     holder.imageView.setImageResource(rowItem.getImageId()); 
     holder.number.setText(rowItem.getNumber()); 
     return convertView; 
    } 



} 

所以在我的主要活动我要访问并共享两个TextView中的值时,在菜单项,用户点击这样的:

case R.id.action_share: 

     Intent sendIntent = new Intent(); 
     sendIntent.setAction(Intent.ACTION_SEND); 
     sendIntent.putExtra(Intent.EXTRA_TEXT, listadapter.holder.trad.getText()); 
     sendIntent.setType("text/plain"); 
     startActivity(Intent.createChooser(sendIntent, getResources().getText(R.string.send_to))); 

但我得到一个NullPointerException在这一行listadapter.holder.trad.getText()

有没有人有一个解决方案呢?先谢谢你。而对于再次抱歉,这不好英语

+0

在您电话有方法的setContentView? – Piyush

+0

予省略在上面的代码中,但我首先调用它在我的方法的onCreate – KhouleIbrahima

+0

这样'@覆盖 \t保护无效的onCreate(捆绑savedInstanceState){ \t \t super.onCreate(savedInstanceState); \t \t setContentView(R.layout.activity_khassaide);' – KhouleIbrahima

回答

2

你应该改变这个....

private class KhassaideAdapterbi extends ArrayAdapter<RowItem>{ 

Context context; 
List<RowItem> Rowitems; 
public KhassaideAdapterbi(Context context, int resourceId, 
     List<RowItem> items) { 

    super(context, resourceId, items); 
    this.context = context; 
    this.Rowitems = items; 
} 

现在得到Rowitems数据......在你onCreate方法

+0

但是Rowitems的值没有最终使用,还是它是我主要活动的属性? – KhouleIbrahima

+0

是的......它是...... – Piyush

+0

你可以通过RowItems.get(position).getTitle()也可以得到.. – Piyush