6

私は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");
    }
};

}

上記のコードで何がうまくいかないのか教えてください。

4

1 に答える 1

0

私は、両方のリストビューを単一の画面に表示するためにフラグメントを取得しました。それが問題かもしれません。1 つのリスト ビューに対して 1 つのフラグメントを使用し、1 つのアクティビティで 2 つのフラグメントを表示します。その方がずっといいと思います。複数のレイアウト(リストビュー)をロードするためにフラグメントがサポートされているとは思わないため

于 2012-11-21T14:44:29.700 に答える