Java 从android中的Listview适配器访问活动中的TextView
我有一个带有列表视图和一些文本视图的活动,如下所示 我想在适配器的OnClickListener的fill()方法中调用TextView的setText()方法。但我无法访问这些文本视图 你怎么能做到这一点 ActivityMoshtari.class: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
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);