我有自己的自定义列表视图,它具有一行TextView和EditText。现在我想在列表视图上方有一个图像,它根据列表视图中所选的EditText改变图像。例如,当用户点击第二行的EditText时,列表视图上方的顶部图像将变为img2。当用户在第一行的EditText上隐藏时,它将是img1等等。android-自定义列表视图,顶部有一个图像
我有问题,我不知道如何找出ListView中选择哪个EditText。
感谢
我有自己的自定义列表视图,它具有一行TextView和EditText。现在我想在列表视图上方有一个图像,它根据列表视图中所选的EditText改变图像。例如,当用户点击第二行的EditText时,列表视图上方的顶部图像将变为img2。当用户在第一行的EditText上隐藏时,它将是img1等等。android-自定义列表视图,顶部有一个图像
我有问题,我不知道如何找出ListView中选择哪个EditText。
感谢
你可以改变你的布局是这样的:
<LinearLayout orientation="vertical">
<ImageView/>
<ListView/>
</LinearLayout>
现在在Java代码中,你可以通过这个ImageView
作为参数传递给你的Adapter
构造。在getView
方法中,您可以将点击侦听器设置为EditText
,并基于此您可以更改ImageView
中的图像。
获取标识,但是如何获取位置在哪个编辑文本被点击。由于onClick被调用,但在该方法中,我不知道哪个编辑文本被点击。因为我有很多图像,但对于所有编辑文本而言它们都不相同。 –
您的布局应如下所示。
Demo.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/iv_demo"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<ListView
android:id="@+id/list_demo"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
Demo.java
public class Demo extends Activity {
ArrayList<String> textViewList = new ArrayList<String>();
ArrayList<String> imageList = new ArrayList<String>();
ArrayList<String> editTextList = new ArrayList<String>();
ListView list;
ImageView ivDemo;
ListDemoAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.demo);
list = (ListView) findViewById(R.id.list_demo);
ivDemo = (ImageView) findViewById(R.id.iv_demo);
adapter = new ListDemoAdapter(this, textViewList, editTextList, imageList);
list.setAdapter(adapter);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Picasso.with(this).load(imageList.get(i)).into(ivDemo);
}
});
}
}
这里你这是由用户点击了编辑文本行的位置。使用此位置,您可以轻松地从Arraylist中的该位置加载图像,并将其显示在ListView上方的Imageview中。
是的,这是一种可能的解决方案。但是我试过了,当我点击编辑框时,onItemClick就不会被调用,只有当我在列表视图中点击行时。 –
您可以通过多次调用addHeaderView()来添加尽可能多的标头。您必须在将适配器设置为列表视图之前执行此操作。
你可以做到这一点像这样
LayoutInflater inflater = getLayoutInflater();
ViewGroup header = (ViewGroup)inflater.inflate(R.layout.your_mage_layout, yourlistview, false);
yourlistview.addHeaderView(header, null, false);
,并记住onItemclick中的位置变得
position=position-1
否则,你会得到,因为列表视图的列的一个onItem期间错误点击被占领你的自定义标题
您可以通过编辑字段的位置或字段上的文本或按钮的编号 – Joh