После того, как представление динамически раздувается как список с кнопкой, прикрепленной к каждой строке. Как передать идентификатор строки каждой из этих кнопок? - PullRequest
0 голосов
/ 13 марта 2011

У меня есть список, этот список в основном представляет собой TableRows в scrollview, который я надувал с помощью inflater макета, т.е. во время выполнения зависит, сколько строк добавляется.Теперь у меня есть кнопка, также прикрепленная в каждом ряду.Эта кнопка является либо кнопкой удаления, либо кнопкой редактирования.Перед программированием я думал, что просто получу идентификатор строки и вызову функцию удаления для этого идентификатора строки.Но теперь, когда я программирую, я вижу, что не могу найти идентификатор строки, потому что кнопка - это всегда одна и та же кнопка, и как кнопка узнает, с какой именно строкой она связана.Я в основном занимаюсь программированием баз данных, где я взял много пользовательского ввода и отобразил его в строке таблицы в представлении прокрутки.Но я не знаю, как мне получить эти строки.На данный момент я не использую какой-либо список массивов или адаптер массива.Нужно ли их использовать, чтобы решить эту проблему?Пожалуйста, помогите.
Я ввожу свой код здесь

   if(dbExists)
    {
        myName = (TextView)findViewById(R.id.myName);
        db.open();
        Cursor c = db.getAllTitles();
        long NoOfRows = c.getCount(); //here I am gettin 30 as entered in database
        while(NoOfRows >= 1)
        {
             c.moveToFirst();

            //.........Inflate here name and number........
             LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
             View inflated = inflater.inflate(R.layout.name, myTableLayout);

             TextView userName = (TextView)findViewById(R.id.myName);
             userName.setText(c.getString(1));//here I am settng the user entered name

             Button delButton = (Button)rowView.findViewById(R.id.Delete_Name);
             delButton.setTag(RowId--);
             delButton.setOnClickListener(this);

             c.moveToNext();
             NoOfRows--;
        }
         db.close();
    }
   @Override
public void onClick(View v) {
    Long rowId = (Long)v.getTag(); 
    if (rowId != null) 
    {
       Toast.makeText(this, "rows get Tag() " + rowId, Toast.LENGTH_LONG).show();
        //db.deleteTitle(rowId); 
    } 

}

1 Ответ

2 голосов
/ 13 марта 2011

Вы можете использовать setTag / getTag для вида, поэтому установите и получите специальную информацию для этого вида.

Используя это, вы вызываете button.setTag(rowId), а затем извлекаете его позже, используя getTag в вашем onClick методе.

Вот подробный ответ с примером кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...