我有自己的自定義列表視圖,它具有一行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