2013-01-17 197 views
1

我有一個小的應用程序,我試圖使用ListActivity顯示YouTube的縮略圖列表onListItemClick是沒有得到所謂的ListActivity

public class ResultListActivity extends ListActivity { 
..... 

...... 
@Override 
    protected void onCreate(Bundle savedInstanceState) { 

loadData(); 


--- 
--- 

} 


private void loadData(final String searchQuery) { 
     AsyncTask<Object, Void, List<YouTubeVideos>> asyncTask = new AsyncTask<Object, Void, List<YouTubeVideos>>() { 

..... 

} 

/** {@inheritDoc} */ 
    @Override 
    protected void onListItemClick(ListView l, View v, int pos, long id) { 
     super.onListItemClick(l, v, pos, id); 

     Log.d("test","Inside onListItemClick"); 

} 

的XML看起來像這樣

<ListView 
     android:id="@android:id/list" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" > 
    </ListView> 



    <ImageView 
    android:id="@+id/imageView1" 
    android:layout_height="wrap_content" 
    android:layout_width="100dp" 
    android:focusable="false" 
    android:focusableInTouchMode="false" 
    > 
</ImageView> 

適配器:

public class ResultViewAdapter extends BaseAdapter { 

@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

ImageView imageView = (ImageView) row.findViewById(R.id.imageView1); 

     imageView.setImageDrawable(torvideo.getDrawable()); 





     return row; 
} 

... 

} 

我無法獲得onListItemClick調用。如果我犯了什麼錯誤,請讓我知道嗎?

更新1/17

當我點擊沒有任何反應,但我看到這些日誌中

4月1日至18日:09:32.030:W /跟蹤(973):從nativeGetEnabledTags意外的值:0

+0

看來,這是因爲你必須在列表中的ImageView 。嘗試將其更改爲正常的textView並檢查事件是否得到處理? –

+0

不,它沒有被調用,即使是textView – Cavish

回答

0
ListView lv = getListView(); 
lv.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView<?> arg0, View view, int arg2, 
         long arg3) { 
        Log.d("test","Inside onListItemClick"); 
       } 
      }); 
2

對於ListActivity其簡單調用setOnItemClickListener

對應的代碼是下面

list.setOnItemClickListener(new OnItemClickListener() { 

public void onItemClick(AdapterView<?> arg0, 
        View arg1, int position, long arg3) 
{ 
    System.out.println("LIST ITEM POSITION "+position); 
} 
}); 
+0

在load()方法後,在我的ResultListActivity中添加了這個。仍然沒有運氣:( – Cavish

1

baseadapter你imageview的XML加入這一行

android:clickable="false" 
android:focusable="false" 
+0

添加了這個,但仍然沒有運氣 – Cavish

0

您需要在您的ResultViewAdapter添加row.setOnClickListener(new OnItemClickListener(position));的getView()

+0

OnItemClickListener無法解析爲一個類型。編譯錯誤 – Cavish

3

在我ListView我有一個可點擊的TextView和點擊ImageViewonListItemClick不適用於我,因爲我在列表行中有多個可單擊的項目。所以我所做的是我在適配器的getView()中實現了onClickListener。這裏是我的代碼:

public class SimpleArrayAdapter extends ArrayAdapter<String>{ 

private LayoutInflater mInflater; 
private String[] mStrings; 
private TypedArray mIcons; 
private int mViewResourceId; 

public SimpleArrayAdapter(Context context, int textViewResourceId, String[] names, TypedArray icons) { 
    super(context, textViewResourceId, names); 
    // TODO Auto-generated constructor stub 

    mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    mStrings = names; 
    mIcons = icons; 
    mViewResourceId = textViewResourceId; 
} 


public int getCount(){ 
    return mStrings.length; 
} 

public View getView(final int position, View convertView, ViewGroup parent){ 
    convertView = mInflater.inflate(mViewResourceId, null); 

    ImageView iv = (ImageView)convertView.findViewById(R.id.option_icon); 
    iv.setImageDrawable(mIcons.getDrawable(position)); 
    iv.setTag("colorChooserClicked"); 

    iv.setOnClickListener(new OnClickListener() { 
     int pos = position; 
     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      Log.v("text", "Image clicked, row %d"+pos); 

     } 
    }); 
    TextView tv = (TextView)convertView.findViewById(R.id.textview01); 
    tv.setText(mStrings[position]); 
    tv.setTag("textViewClicked"); 
    tv.setOnClickListener(new OnClickListener() { 
     int textpos = position; 
     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      Log.v("text", "Title clicked %s"+mStrings[textpos]); 
     } 
    }); 
    return convertView; 

} 

} 

它發生,因爲我們有一個以上的可點擊的項目,我們正在嘗試使用ListActivity。否則,另一個選項是爲MainActivity擴展Activity類,然後執行此操作。

0

,如果你有一個叫ListActivity類確保你從右邊listActivity延長,因爲擴展的時候,無論你的類ListActivity和超類ListActivity將顯示