2012-11-21 30 views
6

我一直在做Android平板电脑的应用程序。在这,我需要显示两个ListViews。一个用于简单的listview,一个用于自定义listview。一旦我点击简单的列表视图行,那么这些细节必须显示在另一个自定义列表视图中。为此,我被分割为在单个屏幕上显示两个列表视图。对于自定义ListView,我被自定义适配器绑定自定义数据。但是当我点击简单的列表视图行时,应用程序显示没有响应错误。我的代码会是这样的。 对于我的片段包含这样的如何在android Fragement中设置自定义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"); 
    } 
}; 

}

请指引我什么在上面的代码会错。

+0

我在代码中找不到任何明显的错误,但是如果您在Eclipse中使用调试器并且在设置断点后执行代码onClickListener中的Log.e()语句,或许您可以查明问题所在? – span

+0

我看到你添加了三个不同的onClickListners。 他们在哪里,为什么你想这样做? btnone.setOnClickListener(oneclick); btntwo.setOnClickListener(twoclick); btnthree.setOnClickListener(thrirdclick); – Noloxs

+0

是的,我们可以采取一个操作方法来处理多个按钮动作。但关于我的问题,这不是问题。只是我喜欢那样。但我没有实现这个功能。 – nari

回答

0

我被带走了在单个屏幕上显示两个列表视图的片段。 可能这就是问题。一个列表视图的一个片段 并在一个活动中显示两个片段。 我认为这好多了。 因为我不认为这个片段支持加载多布局(列表视图)

+0

是的,我采取了一个片段只有自定义listview和简单列表视图不在同一个片段。 – nari

相关问题