Java 从android中的Listview适配器访问活动中的TextView

Java 从android中的Listview适配器访问活动中的TextView,java,android,android-layout,listview,android-listview,Java,Android,Android Layout,Listview,Android Listview,我有一个带有列表视图和一些文本视图的活动,如下所示 我想在适配器的OnClickListener的fill()方法中调用TextView的setText()方法。但我无法访问这些文本视图 你怎么能做到这一点 ActivityMoshtari.class: public class ActivityMoshtari extends Activity { public ArrayList<StructMoshtariItem> moshtariItems = new Arra

我有一个带有列表视图和一些文本视图的活动,如下所示

我想在适配器的OnClickListener的fill()方法中调用TextView的setText()方法。但我无法访问这些文本视图

你怎么能做到这一点

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();
}}
公共类活动Moshtari扩展活动{
public ArrayList moshtariItems=new ArrayList();
公共阵列适配器Moshtari;
ListView lstMoshtari;
TextView txtInfoMoshtariName;
TextView-txtInfoMoshtariTel;
TextView txtInfoMoshtariMob;
@凌驾
创建时受保护的void(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=新adaptermoshtari项目(大多数项目);
lstMoshtari.setAdapter(adaptermoshtari);
对于(int i=0;i<10;i++){
StructMoshtariItem moshtariitem=新StructMoshtariItem();
moshtariitem.id=”“+i;
moshtariitem.name=“某些名称”+i;
moshtariitem.tel=“someTel”+i;
添加(moshtariitem);
}
adaptermoshtari.notifyDataSetChanged();
}}
活动_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;
}
公共类AdapterMoshtariItem扩展了ArrayAdapter{
公共AdapterMoshtariItem(ArrayList数组){
super(G.context,R.layout.moshtari_项,数组);
}
私有静态类视图持有者{
公共视图组layoutRoot;
公共文本视图txtmoshtarid;
公共文本视图txtMoshtariName;
公共文本视图txtMoshtariTel;
公共图像视图imgMoshtariRecordView;
公共视图持有者(视图){
layoutRoot=(ViewGroup)view.findViewById(R.id.layoutRoot);
txtmoshtarid=(TextView)view.findviewbyd(R.id.txtmoshtarid);
txtMoshtariName=(TextView)view.findViewById(R.id.txtMoshtariName);
txtMoshtariTel=(TextView)view.findViewById(R.id.txtMoshtariTel);
imgmoshtariecordview=(ImageView)view.findViewById(R.id.imgmoshtariecordview);
}
公共空白填充(最终ArrayAdapter适配器、最终StructMoshtariItem项、最终int位置){
txtmoshtarid.setText(item.id);
txtMoshtariName.setText(item.name);
txtMoshtariTel.setText(项目电话);
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图arg0){
}
});
}
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视窗座;
StructMoshtariItem item=getItem(position);
if(convertView==null){
convertView=G.充气机.充气(R.布局.moshtari_项,父项,false);
支架=新的视图支架(convertView);
convertView.setTag(支架);
}否则{
holder=(ViewHolder)convertView.getTag();
}
持有人。填写(本、项目、位置);
返回视图;
}

}

您可以将视图传递给适配器,以便在需要时进行更新。 为此,您需要在适配器构造函数中添加三个
TextView
param。 适配器中的更改 在适配器类中声明
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
param。 适配器中的更改 在适配器类中声明
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也可以使用界面访问textView
 adaptermoshtari = new AdapterMoshtariItem(moshtariItems,txtMoshtariName,txtInfoMoshtariTel,txtInfoMoshtariMob);
 lstMoshtari.setAdapter(adaptermoshtari);