2015-07-21 105 views
1

我有一个ListView和一些TextViews像下面的活动进入一个TextView在活动从列表视图适配器,在android系统

我要打电话的setText()在填写OnClickListener TextViews的方法()方法。但我不能访问这些TextViews ...!

这怎么办?

ActivityMoshtari.class:

public class ActivityMoshtari extends Activity { 

public ArrayList<StructMoshtariItem> moshtariItems = new ArrayList<StructMoshtariItem>(); 
public ArrayAdapter      adaptermoshtari; 
ListView        lstMoshtari; 
TextView        txtInfoMoshtariName; 
TextView        txtInfoMoshtariTel; 
TextView        txtInfoMoshtariMob; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_moshtari); 
    txtInfoMoshtariName= (TextView) findViewById(R.id.txtInfoMoshtariName); 
    txtInfoMoshtariMob = (TextView) findViewById(R.id.txtInfoMoshtariMob); 
    txtInfoMoshtariTel = (TextView) findViewById(R.id.txtInfoMoshtariTel); 

    lstMoshtari = (ListView) findViewById(R.id.lstMoshtari); 
    adaptermoshtari = new AdapterMoshtariItem(moshtariItems); 
    lstMoshtari.setAdapter(adaptermoshtari); 

    for (int i = 0; i < 10; i++) { 
     StructMoshtariItem moshtariitem = new StructMoshtariItem(); 
     moshtariitem.id = "" + i; 
     moshtariitem.name = "some name" + i; 
     moshtariitem.tel = "someTel" + i; 

     moshtariItems.add(moshtariitem); 
    } 
     adaptermoshtari.notifyDataSetChanged(); 
}} 

activity_moshtari.xml:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="horizontal" > 

<LinearLayout 
    android:layout_width="0dp" 
    android:layout_height="match_parent" 
    android:layout_weight="1" 
    android:orientation="vertical" > 

    <ListView 
     android:id="@+id/lstMoshtari" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     > 
    </ListView> 
</LinearLayout> 

<LinearLayout 
    android:id="@+id/layInfoMoshtari" 
    android:layout_width="0dp" 
    android:layout_height="match_parent" 
    android:layout_weight="1" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/txtInfoMoshtariTel" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" 
     android:textColor="#000" 
     android:textSize="26sp" /> 

    <TextView 
     android:id="@+id/txtInfoMoshtariMob" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" 
     android:textColor="#000" 
     android:textSize="26sp" /> 

    <TextView 
     android:id="@+id/txtInfoMoshtariName" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" 
     android:textColor="#000" 
     android:textSize="26sp" /> 
</LinearLayout> 

我有适配器我的ListView:

AdapterMoshtariItem.class

public class AdapterMoshtariItem extends ArrayAdapter<StructMoshtariItem> { 

public AdapterMoshtariItem(ArrayList<StructMoshtariItem> array) { 
    super(G.context, R.layout.moshtari_item, array); 
} 


private static class ViewHolder { 

    public ViewGroup layoutRoot; 
    public TextView  txtMoshtariID; 
    public TextView  txtMoshtariName; 
    public TextView  txtMoshtariTel; 
    public ImageView imgMoshtariRecordView; 

    public ViewHolder(View view) { 
     layoutRoot = (ViewGroup) view.findViewById(R.id.layoutRoot); 
     txtMoshtariID = (TextView) view.findViewById(R.id.txtMoshtariID); 
     txtMoshtariName = (TextView) view.findViewById(R.id.txtMoshtariName); 
     txtMoshtariTel = (TextView) view.findViewById(R.id.txtMoshtariTel); 
     imgMoshtariRecordView = (ImageView) view.findViewById(R.id.imgMoshtariRecordView); 
    } 

    public void fill(final ArrayAdapter<StructMoshtariItem> adapter, final StructMoshtariItem item, final int position) { 
     txtMoshtariID.setText(item.id); 
     txtMoshtariName.setText(item.name); 
     txtMoshtariTel.setText(item.tel); 

     layoutRoot.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 


      } 
     }); 

    } 
} 


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

    StructMoshtariItem item = getItem(position); 
    if (convertView == null) { 
     convertView = G.inflater.inflate(R.layout.moshtari_item, parent, false); 
     holder = new ViewHolder(convertView); 
     convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    holder.fill(this, item, position); 
    return convertView; 
} 

}

+1

你还可以使用接口访问textView – Vishwa

回答

5

您可以将视图传递给适配器,以便您可以在需要时更新它。 您需要在您的适配器构造函数中添加三个TextView参数。 改变适配器 申报适配器类

TextView name,tel,mob; 

public AdapterMoshtariItem(ArrayList<StructMoshtariItem> array,TextView txtInfoMoshtariName,TextView txtInfoMoshtariTel 
            ,TextView txtInfoMoshtariMob) { 
super(G.context, R.layout.moshtari_item, array); 
this.name=txtInfoMoshtariName; 
this.tel=txtInfoMoshtariTel; 
this.mob=txtInfoMoshtariMob; 
} 

Textview变量和更改填充数据功能

public void fill(final ArrayAdapter<StructMoshtariItem> adapter, final StructMoshtariItem item, final int position) { 
     name.setText(item.id); 
     tel.setText(item.name); 
     mob.setText(item.tel); 

     layoutRoot.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 


      } 
     }); 

    } 

最后通过textViews从类文件适配器。

adaptermoshtari = new AdapterMoshtariItem(moshtariItems,txtMoshtariName,txtInfoMoshtariTel,txtInfoMoshtariMob); 
lstMoshtari.setAdapter(adaptermoshtari); 
+0

完美答案... –