0

onItemClickListener を使用してカスタム リストを作成しましたが、下半分だけがクリック可能です。リストは、ArrayAdapter を拡張する ImageAdapter を使用します。各行には、次の xml 引数を使用する 2 つの ImageView と 1 つの TextView があります。

android:focusable="false" 
android:focusableInTouchMode="false"
android:clickable="false"

私はこのチュートリアルに従い、TextView と ImageView を削除しようとさえしました。それらを削除した後、リストはまったくクリックできませんでした。

これは私のメインアクティビティです

public class ClickTestActivity extends ListActivity  
{ 
String[] listItems={"alpha", "beta", "gamma", "delta", "epsilon"};  
boolean[] listImages={true, false, true, false, true}; 

@Override
public void onCreate(Bundle savedInstanceState)  
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    setListAdapter(new ImageAdapter(this, R.layout.main, R.id.text1, R.id.image1, listItems, listImages )); 
    getListView().setOnItemClickListener(new OnItemClickListener() { 
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {        

            Toast.makeText(getApplicationContext(), "Test", Toast.LENGTH_SHORT).show();


        } 
    }); 
} 
} 

そして私のImageAdapter

public class ImageAdapter extends ArrayAdapter  
{  
Activity context; 
String[] items; 
boolean[] arrows; 
int layoutId; 
int textId; 
int imageId; 

ImageAdapter(Activity context, int layoutId, int imageId, String[] items, boolean[] arrows)  
{  
    super(context, layoutId, items);  

    this.context = context;  
    this.items = items; 
    this.arrows = arrows; 
    this.layoutId = layoutId; 
    this.textId = textId; 
    this.imageId = imageId; 
}  

public View getView(int pos, View convertView, ViewGroup parent)  
{  
    LayoutInflater inflater=context.getLayoutInflater();  
    View row=inflater.inflate(layoutId, null);  
    TextView label=(TextView)row.findViewById(textId);  

    label.setText(items[pos]);  

    if (arrows[pos])  
    {  
     ImageView icon=(ImageView)row.findViewById(imageId);   
        icon.setImageResource(R.drawable.ic_launcher);  
    }     

    return(row);  
}  
} 

および main.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/layercontainer"
   android:orientation="horizontal"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:background="#ffffff">     
   <ListView 
      android:id="@android:id/list"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"/> 
   <TextView
      android:id="@+id/text1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentLeft="true" 
      android:padding="10dp"
      android:textSize="16sp"
      android:textColor="#000000"    
      android:focusable="false" 
      android:focusableInTouchMode="false"
      android:clickable="false"/> 
   <ImageView
      android:id="@+id/image1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentRight="true"
      android:focusable="false" 
      android:focusableInTouchMode="false"
      android:clickable="false"/> 
 </RelativeLayout> 
4

1 に答える 1

0

インフレートされる listView レイアウトは別のレイアウトである必要があります。ListView内のTextViewとImageViewに別のxmlを使用してみてくださいlist_item.xmlと言います

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layercontainer"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#ffffff">     

<TextView
  android:id="@+id/text1"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_alignParentLeft="true" 
  android:padding="10dp"
  android:textSize="16sp"
  android:textColor="#000000"    
  android:focusable="false" 
  android:focusableInTouchMode="false"
  android:clickable="false"/> 
<ImageView
   android:id="@+id/image1"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
  android:layout_alignParentRight="true"
  android:focusable="false" 
  android:focusableInTouchMode="false"
  android:clickable="false"/> 
 </RelativeLayout> 

main.xml にはリストビューのみがあります。変化する

 setListAdapter(new ImageAdapter(this, R.layout.main, R.id.text1, R.id.image1, listItems, listImages )); 

 setListAdapter(new ImageAdapter(this, R.layout.list_item, R.id.text1, R.id.image1, listItems, listImages )); 
于 2012-03-28T08:37:41.047 に答える