で私が持っている:のsetText()のTextViewのlist_row.xml
- 一つ
MyListActivity class extends ListActivity
setContentView(R.layout.mylist)
。 - 2つのxmlファイル:
mylist.xml
およびlist_row.xml
。 mylist.xml
はレイアウトで、list_row.xml
は各行の外観です。list_row.xml
は、3TextViews(t1,t2,t3)
を含む。
クラスのt2のテキストを変更したいとします。コンテンツビューはmylist.xmlなので、単にfindViewById
を使用することはできません。だから私はLayoutInflater
を使った。
LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
View v = inflater.inflate(R.layout.list_row, null);
textView2 = (TextView) v.findViewById(R.id.t2);
textView2.setText("ccccc");
問題は、t2のテキストは決して変更されないということです。私は何度も試してみましたが、テキストはlist_row.xml
で設定したテキストのままです。私は理由を理解することができません..誰かが助けてくれますか。ありがとう!
===== ソリューション:=====
は自分SimpleCursorAdapter
クラスを作成し、getView()
メソッドをオーバーライドします。私はそのラインを持っていない場合は、textView1
は常に(例えば。textView1
は、IDを示している場合、これは常に1である)最初の行の値が表示されますので、
private class MySimpleCursorAdapter extends SimpleCursorAdapter {
Cursor c;
public MySimpleCursorAdapter(Context context, int layout, Cursor c,
String[] from, int[] to) {
super(context, layout, c, from, to);
this.c = c;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
super.getView(position, convertView, parent);
LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.list_row, parent, false);
TextView textview1 = (TextView) rowView.findViewById(R.id.text1);
textView1.setText(c.getString(1));// whatever should be in textView1
textView2 = (TextView) rowView.findViewById(R.id.text2);
textView2.setText("ccccc");
return rowView;
}
}
super.getView(position, convertView, parent);
は非常に重要です。
こんにちは、返信ありがとうございます。私はSimpleCursorAdaperを持っていて、 "指定されたXMLファイルからビューを呼び出す" public View newView(コンテキストコンテキスト、カーソルカーソル、ViewGroup親) 'public abstract View getView(int position、View convertView、ViewGroup私はXMLファイルから膨らませることができます。しかし、APIでは、どのように膨らませるのかは述べていません。あなたは例へのリンクを提供できますか?ありがとうございます – Dongminator
別の質問です。ルートビューはリストビューであり、各行はリストビューの子ですか? – Dongminator
ええ、問題は解決しました!単に 'MySimpleCursorAdapter'を追加し、' getView() 'をオーバーライドしてそこのテキストを変更してください。 getView()は、各行に対してアダプタによって呼び出されることが判明しました。ありがとう! – Dongminator