【问题标题】:ListView with customadapter -> onclick dialog带有 customadapter 的 ListView -> onclick 对话框
【发布时间】:2018-06-14 08:08:42
【问题描述】:

我想在单击 ListView 项(使用自定义适配器)时创建一个对话框,但我真的不知道如何从 ListView 中获取一个特定的东西以放入对话框中。我只想在对话框中显示描述。提前谢谢!

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            AlertDialog.Builder alertDialog = new AlertDialog.Builder (WorkoutActivity.this);
            alertDialog.setTitle("Description");

            String selectedItem = (String) parent.getItemAtPosition(position);

            alertDialog.setMessage(selectedItem);
            alertDialog.setNegativeButton("Cancel", new OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            finish();
                        }
                    });
            alertDialog.show();
        }
    });

这是自定义适配器

class CustomAdapter extends BaseAdapter {

    @Override
    public int getCount() {
        return IMAGES.length;
    }

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

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

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        view = getLayoutInflater().inflate(R.layout.customlayout, null);

        ImageView image=(ImageView)view.findViewById(R.id.image);
        TextView name=(TextView)view.findViewById(R.id.name);
        TextView description=(TextView)view.findViewById(R.id.description);

        image.setImageResource(IMAGES[i]);
        name.setText(NAMES[i]);
        description.setText(DESCRIPTIONS[i]);

        return view;
    }
}

【问题讨论】:

    标签: android listview onclick dialog


    【解决方案1】:
    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        ....
        //setTag in itemview
        view.setTag(DESCRIPTIONS[i]); 
        return view;
    }
    
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
       ...
       String description = (String) view.getTag()
       //display description
    }
    

    【讨论】:

      【解决方案2】:
      listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
          @Override
          public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
              AlertDialog.Builder builder = new AlertDialog.Builder(this);
              buider.setTitle("Description");
              builder.setMessage(adapter.getItem(position).selectedItem);
              builder.setNegativeButton("Cancel", new OnClickListener() {
                  @Override
                  public void onClick(DialogInterface dialogInterface, int i) {
                      finish();
                  }
              });
          AlertDialog dialog = builder.create();
          dialog.show();
          }
      });
      

      这将在对话框中显示 selectedItem。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-20
        • 1970-01-01
        相关资源
        最近更新 更多