0

ArrayAdapterを自分の好みに変換するように設定しましたが、LinearLayoutsの子をそのリストビューで使用する方法を知りたいと思います。たとえば、LinearlayoutにTextViewがあり、setTextを呼び出したいのですが、方法がわからない、またはsetOnClickListenerと呼びたいボタンがあるかもしれませんが、方法がわかりません!

これが私のgetViewコードです:

@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub

        if (convertView == null){
            convertView = inf.inflate(R.layout.normal_row, parent , false);
        }
        switch(position){
        case(0):
            // here is where my first LinearLayout goes , containing an Image and Switch which I need to program in onCheckedChangeListener ...
            convertView = (LinearLayout) inf.inflate(R.layout.row_switch, parent,false);

            break;

        case(1)
        // here I need to set the Text for the following two options on some basis , they are both linearLayouts containing a single textView which I want to call setText for each case  1 and 2.
             break;
            case(2)

        }
4

3 に答える 3

0

normal_rowレイアウトにID@id/my_text_viewのTextViewがあるとします。次に、次のようなテキストを設定します

TextView view = (TextView) convertView.findViewById(R.id.my_text_view);
view.setText("Some text");

同様の方法で、IDで膨らませたレイアウトのすべてにアクセスできます。

ただし、注意すべき点の1つは、膨らませているビューには2つのタイプがあるようです。私が提供したコードを使用しようとしましたがmy_text_view、normal_rowにのみ存在するとします。次に、row_switchビューを膨らませた場合、findViewById()は、指定されたIDのビューを見つけることができないため、nullを返します。

于 2012-12-09T21:17:36.747 に答える
0

onItemClickを使用して、OnItemClickListenerが提供するビューでビューを見つけてください。

例: `mListView.setOnItemClickListener(new OnItemClickListener(){

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {

        }

    });`

渡されたビューで、すべてのlistViewの子内でテキストビューまたはボタンを見つけます。

例:TextView tempTextView = (TextView) arg1.findViewById(R.id.myTextView);

テキストビューのIDは、すべての行の拡張レイアウトで割り当てたIDです。

于 2012-12-09T21:17:52.600 に答える
0
TextView textview = (TextView) convertView.findById(R.id.txt); 
text.setText("textview");

Button btn  = (Button) convertView.findById(R.id.btn); 

btn.setTag(textview); 

btn.setOnClickListener(...)
{
   onClick(..){
      TextView t = (Textview)btn.getTag():
      t.setText("new value")

   }
}

私が以前に答えた質問を見てみることをお勧めします。

于 2012-12-09T21:19:11.950 に答える