2016-03-03 96 views
0

我想通过它的位置显示列表视图中的项目。例如:如果我点击第三位,我需要显示第三项。这是我的代码。我想在单击项目按钮时显示。如何在Android中按位置显示列表视图中的项目

for (int k = 0; k < jsonarrays.length(); k++) { 
      JSONObject main_menus = jsonarrays.getJSONObject(k); 
      SUB_MENU_ID = main_menus.getString(TAG_SUB_MENU_ID); 
      SUB_MENU_NAME = main_menus.getString(TAG_SUB_MENU_NAME); 
      HashMap<String, String> submenu = new HashMap<String, String>(); 
      submenu.put(TAG_SUB_MENU_ID, SUB_MENU_ID); 
      submenu.put(TAG_SUB_MENU_NAME, SUB_MENU_NAME); 
      submenus.add(submenu); 
} 
@Override 
protected void onPostExecute(String result) { 
     submenuadapter = new SubmenufoodCategoryAdapter(submenus, getActivity()); 
     sb_list.setAdapter(submenuadapter); 
     sb_list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

     } 
     });} 

这是我的适配器类别:

public class SubmenufoodCategoryAdapter extends BaseAdapter { 
    ArrayList<HashMap<String, String>> mainmenu; 
    HashMap<String, String> mainmenumap = new HashMap<String, String>(); 
    Context con; 
    public SubmenufoodCategoryAdapter(ArrayList<HashMap<String, String>> submenu, Context con) { 
     super(); 
     this.mainmenu = submenu; 
     this.con = con; 
    } 
    @Override 
    public int getCount() { 
     return mainmenu.size(); 
    } 
    @Override 
    public Object getItem(int position) { 
     return position; 
    } 
    @Override 
    public long getItemId(int position) { 
     return position; 
    } 
    @SuppressLint("ViewHolder") 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     final Holder holder = new Holder(); 
     LayoutInflater layoutInflater = (LayoutInflater) con.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     mainmenumap = mainmenu.get(position); 
     View rowview; 
     rowview = layoutInflater.inflate(R.layout.submenu_button, null); 
     holder.btn = (Button) rowview.findViewById(R.id.submenu_layout_button); 
     holder.btn.setText(mainmenumap.get(FoodMenuItemFragment.TAG_SUB_MENU_NAME)); 
     return rowview; 
    } 
    public class Holder { 
     Button btn; 
    } 
} 

回答

1

不要比较此代码与您的要求..我只是给你想法..

我认为你正试图从充气适配器的所有数据,以列表视图..我做了我在哪里显示来自适配器的所有细节,以列表视图的对话,以便

builder.setAdapter(notes_second_adapter, 
      new DialogInterface.OnClickListener() { 

       @Override 
       public void onClick(DialogInterface dialog, int position) { 

        notes_child_category_second.setText(notes_second_list 
          .get(position).get(KIDZDAY_TAG_DESCRIPTION)); 
        acti_id_to_save = notes_second_list.get(position).get(
          KIDZDAY_TAG_REF_ID); 
        //sampel_1 = "Nihal Srivastava"; 

       } 
      }); 

    dialog = builder.create(); 
    dialog.show(); 
内的样本

这里你可以看到。在获得数据到适配器后,您可以拨打ArrayList.get(position).value该字段 ..通过点击它可以根据位置获取数据

0

发送这些数据你可以给尝试下面的代码片段:

sb_list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
        @Override 
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    //save data form here to some variables and on button click send data to where you want to show whether in new activity or something else 

      sbmenus.get(2).get(FoodMenuItemFragment.TAG_SUB_MENU_NAME); 

       } 
      });} 
0

您可以使用AlertDialog。 Here就是一个例子,回答2.

public void dialogBox(String message) { 
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this); 
    alertDialogBuilder.setMessage(message); 
    alertDialogBuilder.setPositiveButton("Ok", 
     new DialogInterface.OnClickListener() { 

      @Override 
      public void onClick(DialogInterface arg0, int arg1) { 
     } 
    }); 

    alertDialogBuilder.setNegativeButton("cancel", 
     new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface arg0, int arg1) { 

     } 
    }); 

    AlertDialog alertDialog = alertDialogBuilder.create(); 
    alertDialog.show(); 
} 

请拨打itemClick在()的对话框(String)方法,你要显示的数据。

相关问题