2016-01-04 111 views
0

我有自己的自定義列表視圖,它具有一行TextView和EditText。現在我想在列表視圖上方有一個圖像,它根據列表視圖中所選的EditText改變圖像。例如,當用戶點擊第二行的EditText時,列表視圖上方的頂部圖像將變爲img2。當用戶在第一行的EditText上隱藏時,它將是img1等等。android-自定義列表視圖,頂部有一個圖像

我有問題,我不知道如何找出ListView中選擇哪個EditText。

感謝

+0

您可以通過編輯字段的位置或字段上的文本或按鈕的編號 – Joh

回答

1

你可以改變你的佈局是這樣的:

<LinearLayout orientation="vertical"> 
    <ImageView/> 
    <ListView/> 
</LinearLayout> 

現在在Java代碼中,你可以通過這個ImageView作爲參數傳遞給你的Adapter構造。在getView方法中,您可以將點擊偵聽器設置爲EditText,並基於此您可以更改ImageView中的圖像。

+0

獲取標識,但是如何獲取位置在哪個編輯文本被點擊。由於onClick被調用,但在該方法中,我不知道哪個編輯文本被點擊。因爲我有很多圖像,但對於所有編輯文本而言它們都不相同。 –

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中。

+0

是的,這是一種可能的解決方案。但是我試過了,當我點擊編輯框時,onItemClick就不會被調用,只有當我在列表視圖中點擊行時。 –

0

您可以通過多次調用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期間錯誤點擊被佔領你的自定義標題