Пользовательский просмотр списка Android - PullRequest
0 голосов
/ 18 февраля 2010

Привет, у меня есть собственный просмотр списка с текстовым представлением и кнопкой в ​​каждой строке. У меня возникли проблемы при попытке использовать кнопки. Каждая кнопка будет иметь разные намерения. Это XML-файл для строк списка.

    <?xml version="1.0" encoding="UTF-8"?>
 <RelativeLayout
android:id="@+id/widget28"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<Button
android:id="@+id/widget29"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Remind me"
android:layout_alignParentRight="true"
/>

<TextView android:id="@+id/text12"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:background="#ff99ccff"
  android:text="Text view" />
</RelativeLayout>

Тогда у меня есть еще один XML-файл, который просто содержит представление списка в линейном макете.

Это мой собственный класс массива.

public class customArray extends ArrayAdapter<String> {
 int resource;

 public customArray(Context cont, int _resource, List<String> items) {
      super (cont, _resource,items);
      resource = _resource;
 }

 @Override
 public View getView(int position, View convertView, ViewGroup parent) {
      RelativeLayout rl;

     String prod = getItem(position);
      if (convertView == null) {
           rl = new RelativeLayout(getContext());
           LayoutInflater vi = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
           vi.inflate(resource, rl, true);
      } else {
           rl = (RelativeLayout)convertView;
      }
     TextView t1 = (TextView)rl.findViewById(R.id.text12);
     t1.setText(prod);
      Button b1 = (Button)rl.findViewById(R.id.widget29); 
      return rl;
 }

}

Затем последний класс, который получает данные из базы данных и использует пользовательский адаптер для отображения информации. Кто-нибудь знает, как я буду называть каждую кнопку?

`public class SatMain extends Activity {
    /** Called when the activity is first created. 
     * @param cont */
    @Override

public void onCreate(Bundle savedInstanceState)
{

    List<String> results = new ArrayList<String>(); 

    super.onCreate(savedInstanceState);
    setContentView(R.layout.satmain);
    dbAdapter db = new dbAdapter(this);
     // button.setOnClickListener(m);
    //---get all titles---
    db.open();
      db.InsertData();

    Cursor c =  db.getSat1();

    if (c.moveToFirst())
    {
        do {          
             String pub =  c.getString(c.getColumnIndex(db.KEY_Artist));
             String pub1 =  c.getString(c.getColumnIndex(db.KEY_Time));



          results.add(pub + pub1 );
        } while (c.moveToNext());
    }
    db.close();

   ListView listProducts;
    customArray ca = new customArray(this, R.layout.button, results);
   listProducts = (ListView)findViewById(R.id.list1);
   listProducts.setAdapter(ca);
    ca.notifyDataSetChanged();      

}
}`

1 Ответ

0 голосов
/ 19 февраля 2010

В методе getView вашего адаптера вы должны установить прослушиватель onClick для кнопки. Вы можете создать анонимный класс, чтобы ссылаться на содержимое строки в кнопке. Т.е., добавьте следующее, где вы получите b1 в вашем примере.

b1.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
           //create activity based on prod
        }
   });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...