私はAndroidタブレットのアプリケーションを行っています。この場合、2 つの ListView を表示する必要があります。1 つは単純なリストビュー用で、もう 1 つはカスタム リストビュー用です。単純なリストビュー行をクリックすると、その詳細を別のカスタムリストビューに表示する必要があります。このため、両方のリストビューを 1 つの画面に表示するための断片を取得しました。カスタム ListView の場合、カスタム データをバインドするためのカスタム アダプターが使用されました。しかし、単純なリストビューの行にヒットすると、アプリケーションは応答していないというエラーを表示します。私のコードは次のようになります。私のフラグメントには、このようなコードが含まれています
public class listDetails extends Fragment{
private int nAndroids;
public static ArrayList<HashMap<String, String>> menuItems = new ArrayList<HashMap<String, String>>();
ListDetailsAdapter adapter;
static final String KEY_Title = "title";//"item";
public listDetails() {
}
/**
* Constructor for being created explicitly
*/
public listDetails(int nAndroids) {
this.nAndroids = nAndroids;
}
/**
* If we are being created with saved state, restore our state
*/
@Override
public void onCreate(Bundle saved) {
super.onCreate(saved);
if (null != saved) {
nAndroids = saved.getInt("nAndroids");
}
}
/**
* Save the number of Androids to be displayed
*/
@Override
public void onSaveInstanceState(Bundle toSave) {
toSave.putInt("nAndroids", nAndroids);
}
/**
* Make a grid and fill it with n Androids
*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle saved) {
int n;
Context c = getActivity().getApplicationContext();
LinearLayout l = new LinearLayout(c);
String listitems[]=new String[nAndroids];
HashMap<String, String> map = new HashMap<String, String>();
map.put(KEY_Title, "Question1");
map = new HashMap<String, String>();
map.put(KEY_Title, "Question2");
map = new HashMap<String, String>();
map.put(KEY_Title, "Question3");
map = new HashMap<String, String>();
map.put(KEY_Title, "Question4");
menuItems.add(map);
for (n = 0; n < nAndroids; n++)
{
listitems[n] = "one"+n;
ListView list = new ListView(c);
adapter = new ListDetailsAdapter(this, menuItems);
list.setAdapter(adapter);
}
return l;
}
}
そして、このような私のカスタムアダプターコード
public class ListDetailsAdapter extends BaseAdapter{
///private listDetails listactivity;
private Activity activity;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater=null;
public ListDetailsAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
activity = a;
data=d;
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() {
// TODO Auto-generated method stub
return data.size();
}
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.customlist, null);
TextView title = (TextView)vi.findViewById(R.id.txtTitle);
Button btnone = (Button)vi.findViewById(R.id.btnfirst);
Button btntwo = (Button)vi.findViewById(R.id.btnsecond);
Button btnthree = (Button)vi.findViewById(R.id.btnthird);
Button btnfour = (Button)vi.findViewById(R.id.btnfourth);
Button btnfive = (Button)vi.findViewById(R.id.btnfifth);
btnone.setOnClickListener(oneclick);
btntwo.setOnClickListener(twoclick);
btnthree.setOnClickListener(thrirdclick);
HashMap<String, String> mymap = new HashMap<String, String>();
mymap = data.get(position);
title.setText(mymap.get(listDetails.KEY_Title));
return vi;
}
private View.OnClickListener oneclick = new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Log.e("button clicked", "button one clicked");
}
};
}
上記のコードで何がうまくいかないのか教えてください。