2012-11-21 8 views
6

私はアンドロイドタブレットのアプリケーションをやっている。この中で、私は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; 
    } 

}

そして、私のカスタムアダプタのコードのようなコードは、上記のコードで間違っていただきました私を導いてください含まれています。

+0

私はあなたのコードでは何もわかりませんが、Eclipseでデバッガを使用し、 onClickListenerのLog.e()ステートメント、おそらくあなたは問題を特定できますか? – span

+0

私はあなたが3つの異なるonClickListnersを追加しているのを見ます。 どこにありますか、なぜそれをしたいのですか? btnone.setOnClickListener(oneclick); btntwo.setOnClickListener(twoclick); btnthree.setOnClickListener(thrirdclick); – Noloxs

+0

はい、複数のボタン操作を処理する1つのアクションメソッドを取ることができます。しかし、私の問題に関しては問題ではありません。ちょうど私はそれだけのように取っています。しかし、私はそのための機能を実装していません。 – nari

答えて

0

私は、両方のリストビューを単一画面で表示するための断片になりました。 これは問題です.1つのリストビュー の1つのフラグメントで、1つのアクティビティに2つのフラグメントが表示されることがあります。 私はそれがはるかに良いと思います。 マルチレイアウト(リストビュー)を読み込むためにフラグメントがサポートされていないと思われるので

+0

はい、私はカスタムリストビューだけのための1つの断片をとった、そして単純なリストビューは同じ断片にありません。 – nari

関連する問題