android:descendantFocusability="blocksDescendants"
Button的屬性則要加入
android:focusable="false"
mylistView.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" > <Button android:id="@+id/buttonOption" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1.01" android:text="Button" /> <TextView android:id="@+id/textViewHelp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" /> </LinearLayout> </LinearLayout>
MyAdapter.java:
package com.cyfang.npust.myclass; import java.util.ArrayList; import java.util.HashMap; import com.cyfang.npust.R; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.ListAdapter; import android.widget.TextView; import android.widget.Toast; public class MyAdapter extends BaseAdapter implements ListAdapter { private String[] TAG = new String[] { "Option", "Help" }; private String[] OptionNames = new String[] { "1", "2" }; private String[] HelpNames = new String[] { "A", "B" }; private ArrayList<HashMap<String, Object>> arrayList = new ArrayList<HashMap<String, Object>>(); private Context context; public MyAdapter(Context context) { this.context = context; for (int index = 0; index < 2; index++) { HashMap<String, Object> hashMap = new HashMap<String, Object>(); hashMap.put(TAG[0], OptionNames[index]); hashMap.put(TAG[1], HelpNames[index]); arrayList.add(hashMap); } } @Override public int getCount() { return arrayList.size(); } @Override public Object getItem(int position) { return arrayList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View view, ViewGroup group) { LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View myView = inflater.inflate(R.layout.mylsitview, null); Button buttonOption = (Button) myView.findViewById(R.id.buttonOption); buttonOption.setText(arrayList.get(position).get(TAG[0]).toString()); buttonOption.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(context, "Hi", 1).show(); } }); TextView textView = (TextView) myView.findViewById(R.id.textViewHelp); textView.setText(arrayList.get(position).get(TAG[1]).toString()); return myView; } }
Main.java:
package com.cyfang.npust; import com.cyfang.npust.myclass.MyAdapter; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.ListView; public class MainActivity extends Activity { private ListView listView; private Button buttonEngineer; private MyAdapter adpater; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_option); listView = (ListView) findViewById(R.id.listView); adpater = new MyAdapter(OptionActivity.this); listView.setAdapter(adpater); } }
執行結果: