Получить имя rowItem в listView onClick - PullRequest
0 голосов
/ 03 декабря 2018

Я пытаюсь реализовать простой listView с onClick функциональностью.При нажатии на элемент в listView я хочу показать имя элемента в сообщении 'toast, но я не могу этого сделать.Я использовал метод, предложенный в этой ссылке и ссылке , но не смог получить желаемый результат.Я добавил свой код ниже:

MainActivity

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        rowItem = new AppList();
        final ListView userInstalledApps = (ListView)findViewById(R.id.appListView);

        List<AppList> installedApps = getInstalledApps();
        CustomAppAdapter installedAppAdapter = new CustomAppAdapter(MainActivity.this, installedApps);
        userInstalledApps.setAdapter(installedAppAdapter);

        userInstalledApps.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

                TextView appName = (TextView)adapterView.findViewById(R.id.list_app_name);
                Toast.makeText(getApplicationContext(),
                        "Clicked "+ adapterView.getItemAtPosition(i),Toast.LENGTH_LONG).show();

            }
        });
    }

CustomAppAdapter.java

    public class CustomAppAdapter extends BaseAdapter {

    private LayoutInflater layoutInflater;
    private List<AppList> listStorage;
    Context context;

    public CustomAppAdapter(Context context, List<AppList> listStorage) {
        layoutInflater =(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        this.listStorage = listStorage;
    }

    @Override
    public int getCount() {
        return listStorage.size();
    }

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

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

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

        ViewHolder listViewHolder;
        if(convertView == null){
            listViewHolder = new ViewHolder();
            convertView = layoutInflater.inflate(R.layout.installed_app_list, parent, false);

            listViewHolder.textInListView = (TextView)convertView.findViewById(R.id.list_app_name);
            listViewHolder.imageInListView = (ImageView)convertView.findViewById(R.id.app_icon);
            convertView.setTag(listViewHolder);
        }else{
            listViewHolder = (ViewHolder)convertView.getTag();
        }
        listViewHolder.textInListView.setText(listStorage.get(position).getName());
        listViewHolder.imageInListView.setImageDrawable(listStorage.get(position).getIcon());

        return convertView;
    }

    static class ViewHolder{

        TextView textInListView;
        ImageView imageInListView;
    }
}

Ниже приведенснимок экрана listView: ListView

При попытке использовать этот метод:

Toast.makeText(getApplicationContext(),
                    "Clicked "+ adapterView.getItemAtPosition(i),Toast.LENGTH_LONG).show();

Предположим, я нажал на 2-й элемент в listView, поэтому яполучить сообщение toast как Clicked 2.Но я хочу, чтобы это показывало мне Clicked PhonePe

1 Ответ

0 голосов
/ 03 декабря 2018
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        rowItem = new AppList();
        final ListView userInstalledApps = (ListView)findViewById(R.id.appListView);

        List<AppList> installedApps = getInstalledApps();
        CustomAppAdapter installedAppAdapter = new CustomAppAdapter(MainActivity.this, installedApps);
        userInstalledApps.setAdapter(installedAppAdapter);

        userInstalledApps.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

                TextView appName = (TextView)adapterView.findViewById(R.id.list_app_name);
                Toast.makeText(getApplicationContext(),
                        "Clicked "+ installedApps.get(i).getName(),Toast.LENGTH_LONG).show();

            }
        });
    }

Попробуйте это.

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