私はアンドロイドタブレットのアプリケーションをやっている。この中で、私は2つのListViewを表示する必要があります。 1つは単純なリストビュー用で、もう1つはカスタムリストビュー用です。一度単純なリストビューの行をクリックすると、その詳細は別のカスタムリストビューに表示されなければなりません。このために、私は片方の画面で両方のリストビューを表示するためにフラグメント化されました。カスタムリストビューでは、私はカスタムデータをバインドするカスタムアダプターをとった。しかし、私は単純なリストビューの行に当たったとき、アプリケーションが応答していないエラーを表示します。私のコードはこのようになります。私のフラグメントのために このandroid FragementでカスタムListViewを設定するには?
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");
}
};
}
のようなこの
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;
}
}
そして、私のカスタムアダプタのコードのようなコードは、上記のコードで間違っていただきました私を導いてください含まれています。
私はあなたのコードでは何もわかりませんが、Eclipseでデバッガを使用し、 onClickListenerのLog.e()ステートメント、おそらくあなたは問題を特定できますか? – span
私はあなたが3つの異なるonClickListnersを追加しているのを見ます。 どこにありますか、なぜそれをしたいのですか? btnone.setOnClickListener(oneclick); btntwo.setOnClickListener(twoclick); btnthree.setOnClickListener(thrirdclick); – Noloxs
はい、複数のボタン操作を処理する1つのアクションメソッドを取ることができます。しかし、私の問題に関しては問題ではありません。ちょうど私はそれだけのように取っています。しかし、私はそのための機能を実装していません。 – nari