仅在按列表视图中的图片时,如何制作相关的吐司?

时间:2018-08-12 14:59:36

标签: java android listview

我制作了一个列表视图,其中每个视图内都有图像和文本视图。我想做的是每次按图像时,而不是按其余视图时,用文本视图中的文本烤面包。我尝试使用imageClick(View view)函数,该函数在按下图像时有效,但找不到从文本视图获取文本的方法。我尝试过的另一件事是onItemClick()函数,因此我可以获取视图的位置并从文本视图获取文本,但是我无法检查是否按下了图像。

反正这是我的代码:

public class MainActivity extends AppCompatActivity {
    int[] images = {R.drawable.pic_a, R.drawable.pic_b, R.drawable.pic_c,R.drawable.pic_d };
    String[] names = {"aa","bb","cc","dd"};
    String[] descriptions = {"1a","2a","3a","4a"};
    List<ListViewItem> list = new ArrayList<>();
    int lastPosition = 0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        populateList();
        ListView listView = findViewById(R.id.listView);
        CustomAdapter customAdapter = new CustomAdapter(this,list);
        listView.setAdapter(customAdapter);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {

                toast(names[position]);

            }
        });
    }
    public void imageClick(View view) {

    }
    private void populateList() {
        int size = images.length;
        for(int i = 0;i<size;i++){
            ListViewItem item = new ListViewItem();
            item.imageSource = images[i];
            item.name = names[i];
            item.description = descriptions[i];
            list.add(item);
        }
    }
}

我的listViewItem:

public class ListViewItem {
    int imageSource;
    String name;
    String description;
}

和XML:

<ListView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/listView"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"/>

第二个XML文件:

<ImageView
    android:layout_width="60dp"
    android:layout_height="60dp"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_marginLeft="30dp"
    android:layout_marginStart="30dp"
    android:layout_marginTop="20dp"
    android:id="@+id/imageView" />

<TextView
    android:text="TextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignTop="@+id/imageView"
    android:layout_toRightOf="@+id/imageView"
    android:layout_toEndOf="@+id/imageView"
    android:layout_marginLeft="24dp"
    android:layout_marginStart="24dp"
    android:id="@+id/textView_name" />

<TextView
    android:text="TextView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/imageView"
    android:layout_alignLeft="@+id/textView_name"
    android:layout_alignStart="@+id/textView_name"
    android:id="@+id/textView_description" />

和我的CustomAdapter:

class CustomAdapter extends BaseAdapter {
    private final Activity activity;
    List<ListViewItem> list;
    public CustomAdapter(Activity activity, List<ListViewItem> list){
        super();
        this.list = list;
        this.activity = activity;
    }
    @Override
    public int getCount() {
        return list.size();
    }

    @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 = this.activity.getLayoutInflater().inflate(R.layout.customlayout, null);
        ImageView imageView = (ImageView)view.findViewById(R.id.imageView);
        TextView textView_name = (TextView)view.findViewById(R.id.textView_name);
        TextView textView_description = (TextView)view.findViewById(R.id.textView_description);
        ListViewItem item = this.list.get(i);
        imageView.setImageResource(item.imageSource);
        textView_name.setText(item.name);
        return view;
    }
}

0 个答案:

没有答案