1

小さなアプリケーションがあり、ListActivity を使用して YouTube サムネイルのリストを表示しようとしています。

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更新

クリックしても何も起こりませんが、ログにこれらが表示されます

01-18 04:09:32.030: W/トレース (973): nativeGetEnabledTags からの予期しない値: 0

4

6 に答える 6

3

私のListView中にはクリック可能TextViewとクリック可能がありImageViewます。onListItemClickリスト行に複数のクリック可能なアイテムがあるため、機能しませんでした。だから私がしたことは、アダプター用onClickListenerに自分で実装したことです。getView()これが私のコードです:

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ます。それ以外の場合、他のオプションは、Activityクラスを拡張してMainActivityから実行することです。

于 2013-01-18T06:59:57.963 に答える
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);
}
});
于 2013-01-17T06:56:32.387 に答える
1

baseadapter の imageview xml にこの行を追加します

android:clickable="false"
android:focusable="false"
于 2013-01-17T06:56:51.843 に答える
0

row.setOnClickListener(new OnItemClickListener(position));getView() の ResultViewAdapterを追加する必要があります

于 2013-01-17T07:00:53.727 に答える
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");
                }
            });
于 2013-01-17T06:51:07.320 に答える