Просмотр списка с помощью кнопки

Я хочу, чтобы представление списка с одним текстовым полем и одной кнопкой для каждой строки представления списка. Как я могу установить событие нажатия для каждой кнопки в этом представлении списка

3 ответа

Если вы переопределите ArrayAdapter, вы можете использовать getView() установить прослушиватель onClick для каждой кнопки элемента списка:

class Ass extends ArrayAdapter<RowItem>
{
    @Override
    public android.view.View getView(int position, android.view.View convertView, android.view.ViewGroup parent)
    {
        View elem;
        Button btn;

        if (convertView == null)
        {
            elem = getLayoutInflater().inflate(R.layout.listview_elem, parent, false);
        }
        else
        {
            elem = convertView;
        }

        RowItem itm = getItem(position);
        btn = (Button) elem.findViewById(R.id.button);
        btn.setOnClickListener(new OnClickListener()
        {
            public void onClick(View arg0)
            {
                // TODO Auto-generated method stub
            }
        })

        return elem;
    }
};

Когда вы расширяете BaseAdapater, вы будете переопределять getView(), установите прослушиватель щелчка (получая ссылку на вашу кнопку) в getView().

Если вы использовали настраиваемый адаптер для просмотра списка, то вы устанавливаете clickkevent на кнопку или другие представления. вы не можете установить onclickevent в главном файле, потому что в этом файле мы устанавливаем onItemClickListener, если вы хотите, чтобы onclicklistener на определенной кнопке вида, то вы написали свой код в onClickListener код, который пишется в классе адаптера.

Ниже я показываю класс адаптера. В котором onClickListener применяется к textview, то же самое для кнопки и других представлений, этот код находится в рабочем режиме

public class YourAdapterName extends BaseAdapter 
{

    private LayoutInflater mInflater;
    public YourAdapterName(Context context) {
        this.mInflater = LayoutInflater.from(context);
    }
    public int getCount() {
        return YourValue.length;
    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }

    public View getView(int position, View convertView, ViewGroup parent) 
    {
        final ViewHolder holder;
        if (convertView == null) 
        {
            convertView = mInflater.inflate(R.layout.youradapterxmlfile, null);
            holder = new ViewHolder();
            holder.Name = (TextView) convertView.findViewById(R.id.YourAdapterVaraibleNameInXml);
        } 
        else 
        {
            holder = (ViewHolder) convertView.getTag();
        }
        holder.Name.setOnClickListener(new View.OnClickListener() 
        {
            @Override
            public void onClick(View v) 
            {   
               // onClickEvent you written your code here 
            }
        });
        holder.Name.setText("XYZ");
        return convertView;
    }
    class ViewHolder 
    {
        TextView Name;
    }
}
Другие вопросы по тегам