0

カスタムベースアダプターのリストビューがあります。クラスとアダプターのコードは次のとおりです。

   public class LazyAdapter extends BaseAdapter {
    private Activity activity;
    private ArrayList<HashMap<String, String>> data;
    private static LayoutInflater inflater=null;
    public ImageLoader imageLoader; 


    public LazyAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
        activity = a;
        data=d;
        inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        imageLoader=new ImageLoader(activity.getApplicationContext());
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return data.size();
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }


    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View vi=convertView;
        if(convertView==null)

            vi = inflater.inflate(R.layout.custom_row_view1, null);

        TextView title = (TextView)vi.findViewById(R.id.linkname); // merchnts name
        TextView artist = (TextView)vi.findViewById(R.id.imagename); // address
        //TextView duration = (TextView)vi.findViewById(R.id); // distance
       // ImageView thumb_image=(ImageView)vi.findViewById(R.id.mClogo); // logo

        HashMap<String, String> jsn = new HashMap<String, String>();
        jsn = data.get(position);

        // Setting all values in listview
       title.setText(jsn.get(Second.Li_nk));
       artist.setText(jsn.get(Second.Image_name));
        //duration.setText(song.get(CustomizedListView.KEY_DURATION));
        //imageLoader.DisplayImage(jsn.get(NearBy.KEY_THUMB_URL), thumb_image);
        return vi;
    }

}

そしてそれを実装するクラスは次のとおりです

    HashMap<String,String> map=new HashMap<String,String>();
        map.put("Id",String.valueOf(i));
        map.put(Li_nk,cutsec);
        map.put(Image_name,j4.getString("image_name"));
        mylist.add(map);

    }

    }
    catch(JSONException e){
        Log.e("loG_tag","Error parsing"+e.toString());
    }



     list=(ListView)findViewById(R.id.lv1);
     list.setOnItemClickListener(new AdapterView.OnItemClickListener(){

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                Toast.makeText(getApplicationContext(),
                        "Click ListItem Number " + position, Toast.LENGTH_LONG)
                        .show();

            }

        });
   LazyAdapter adapter = new LazyAdapter(this,mylist);

    list.setAdapter(adapter);
    list.setItemsCanFocus(false);



}

リストビューを含むレイアウトは

  <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FFFFFF"
    android:orientation="vertical" >


    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:src="@drawable/zsm" />


    <ListView
        android:id="@+id/lv1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/imageView1"
        android:clickable="True"
         >

    </ListView>

</RelativeLayout>

リストのカスタムレイアウトのコードは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >




    <RelativeLayout
        android:id="@+id/relativeLayout1"
        android:layout_width="fill_parent"
        android:layout_height="70dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:clickable="True"
        android:focusable="false"


        android:background="@drawable/list_selector"
         >

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:layout_marginLeft="21dp"
            android:focusable="false"


            android:src="@drawable/merchntlogotitle" />


        <TextView
            android:id="@+id/imagename"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/imageView1"
            android:layout_marginLeft="15dp"
            android:layout_toRightOf="@+id/imageView1"
            android:clickable="false"
            android:focusable="false"

            android:text="Small Text"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:textColor="#000000" />


        <TextView
            android:id="@+id/linkname"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@+id/imagename"
            android:layout_alignLeft="@+id/imagename"
            android:clickable="false"
            android:focusable="false"


            android:text="Medium Text"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="#000000" />

    </RelativeLayout>

</RelativeLayout>

onitemclickリスナーを設定しても応答がありません、何が間違っているのですか?フォーカスをfalseに設定することなどについて、これに関する多くの例を読みましたが、何が間違っていますか?どんな助けでも大いに感謝されるでしょう...

4

2 に答える 2

1

行のレイアウト内のすべてのビュー アイテムから次のものを削除します。これは、ListView 自体のアイテム クリック イベントの邪魔になるためです。

android:clickable
android:focusable

例えば:

<RelativeLayout
    android:id="@+id/relativeLayout1"
    android:layout_width="fill_parent"
    android:layout_height="70dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"

    android:background="@drawable/list_selector"
     >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:layout_marginLeft="21dp"

        android:src="@drawable/merchntlogotitle" />


    <TextView
        android:id="@+id/imagename"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/imageView1"
        android:layout_marginLeft="15dp"
        android:layout_toRightOf="@+id/imageView1"

        android:text="Small Text"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:textColor="#000000" />


    <TextView
        android:id="@+id/linkname"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/imagename"
        android:layout_alignLeft="@+id/imagename"

        android:text="Medium Text"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#000000" />

</RelativeLayout>

于 2012-04-16T08:45:54.090 に答える
0

android:clickable="True"レイアウトのどこにも設定しない で、試してみてください。すべてのクリック可能なビューは親にバインドされているため、親はクリック イベントを取得できません。

于 2012-04-16T08:59:17.890 に答える