我有自己的自定义列表视图,它在一行TextView中有EditText。现在我希望在此列表视图上方有一个图像,它根据列表视图中选定的EditText更改图像。因此,例如当用户单击第二行中的EditText时,列表视图上方的顶部图像将更改为img2。当用户在第一行的EditText上隐藏时,它将是img1,依此类推。
我遇到问题,我不知道怎样才能知道在ListView中选择了哪个EditText。
由于
答案 0 :(得分:1)
您可以像这样更改布局:
<LinearLayout orientation="vertical">
<ImageView/>
<ListView/>
</LinearLayout>
现在,在您的Java代码中,您可以将此ImageView
作为参数传递给Adapter
构造函数。在getView
方法中,您可以为EditText
设置点击监听器,并根据您可以更改ImageView
中的图像。
答案 1 :(得分:0)
您的布局应如下所示。
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中。
答案 2 :(得分:0)
您可以多次调用addHeaderView()来添加任意数量的标头。在将适配器设置为列表视图之前,您必须执行此操作。
你可以这样做
<form method="POST" action="confirmReservation.php" onSubmit="return validation()" name ="frm">
<div class="col-md-2 form-group">
<br><input type="text" id = "Fname" name="Fname" class="form-control" placeholder="First Name" required>
</div>
</form>
并记住在onItemclick期间,位置变为
LayoutInflater inflater = getLayoutInflater();
ViewGroup header = (ViewGroup)inflater.inflate(R.layout.your_mage_layout, yourlistview, false);
yourlistview.addHeaderView(header, null, false);
否则你会在onItem点击期间收到错误,因为listview的一行被你的自定义标题占用