如何使用Hashmap使Android ListView可点击?

如何使用Hashmap使Android ListView可点击?,android,android-listview,hashmap,Android,Android Listview,Hashmap,首先,我很抱歉,因为之前已经有人问过类似的问题。我已经试过了,但在我的程序中不起作用。因此,我需要你的帮助来帮助我完成我的计划。多谢各位 问题:无法单击我的列表转到下一个活动 ListPending.java public void getTable(String r) { final ListView lv; lv = (ListView) findViewById(R.id.lsApproval); ArrayList<HashMap<String,

首先,我很抱歉,因为之前已经有人问过类似的问题。我已经试过了,但在我的程序中不起作用。因此,我需要你的帮助来帮助我完成我的计划。多谢各位

问题:无法单击我的列表转到下一个活动

ListPending.java

  public void getTable(String r) {
    final ListView lv;
    lv = (ListView) findViewById(R.id.lsApproval);
    ArrayList<HashMap<String, String>> feedList= new ArrayList<HashMap<String, String>>();

    try {

        JSONArray jArray = new JSONArray(r);

        JSONObject jInit = jArray.getJSONObject(0);
        String valid = jInit.getString("valid");
        String none="NO";
        String empty="EMPTY";
        TextView tv;
        tv = (TextView)findViewById(R.id.tvNone);

        if (valid.equals(none))
        {
            TextView tv1,tv2,tv3;

            tv1 = (TextView)findViewById(R.id.tvSname);
            tv2 = (TextView)findViewById(R.id.tvDest);
            tv3 = (TextView)findViewById(R.id.tvDate);

            tv.setText("\n\n\n\n\n\n" + "You do not have applicant under your approval" + "\n\n\n\n" );
            tv1.setText("");
            tv2.setText("");
            tv3.setText("");

        }
        else if (valid.equals(empty))
        {
            TextView tv1,tv2,tv3;

            tv1 = (TextView)findViewById(R.id.tvSname);
            tv2 = (TextView)findViewById(R.id.tvDest);
            tv3 = (TextView)findViewById(R.id.tvDate);

            tv.setText("\n\n\n\n\n\n" + "No Pending List" + "\n\n\n\n" );
            tv1.setText("");
            tv2.setText("");
            tv3.setText("");

        }
        else
        {
            String j=String.valueOf(jArray.length());
            tv.setText("Have " +j+" applications need your approval");

            for(int i=0; i<jArray.length();i++){

                JSONObject json = jArray.getJSONObject(i);

                String date = json.getString("dtfrom");
                StringTokenizer tk = new StringTokenizer(date);
                String dat = tk.nextToken();  // <---  yyyy-mm-dd

                String staff = json.getString("staffname");
                String dest = json.getString("destination");

                HashMap<String, String> map = new HashMap<String, String>();
                map.put("image", String.valueOf(R.mipmap.view));
                map.put("staff", staff);
                map.put("dest", dest);
                map.put("date", dat);
                feedList.add(map);


                SimpleAdapter simpleAdapter = new SimpleAdapter(this, feedList, R.layout.list_pending,
                        new String[]{"staff", "dest","date","image"},
                        new int[]{R.id.tvStaff, R.id.tvDest, R.id.tvDate, R.id.ibView});
                lv.setAdapter(simpleAdapter);


                // React to user clicks on item
                lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {

                    public void onItemClick(AdapterView<?> parentAdapter, View view, int position,
                                            long id) {


                        Toast.makeText(ListPending.this, "try" , Toast.LENGTH_SHORT).show();

                    }
                });

            }
        }
public void getTable(字符串r){
最终列表视图lv;
lv=(ListView)findViewById(R.id.lsApproval);
ArrayList feedList=新的ArrayList();
试一试{
JSONArray jArray=新JSONArray(r);
JSONObject jInit=jArray.getJSONObject(0);
String valid=jInit.getString(“有效”);
字符串none=“否”;
String empty=“empty”;
文本视图电视;
tv=(TextView)findViewById(R.id.tvNone);
if(有效。等于(无))
{
文本视图tv1、tv2、tv3;
tv1=(TextView)findViewById(R.id.tvSname);
tv2=(TextView)findViewById(R.id.tvDest);
tv3=(TextView)findViewById(R.id.tvDate);
tv.setText(“\n\n\n\n\n”+”您没有批准的申请人“+”\n\n\n”);
tv1.setText(“”);
tv2.setText(“”);
tv3.setText(“”);
}
else if(有效。等于(空))
{
文本视图tv1、tv2、tv3;
tv1=(TextView)findViewById(R.id.tvSname);
tv2=(TextView)findViewById(R.id.tvDest);
tv3=(TextView)findViewById(R.id.tvDate);
tv.setText(“\n\n\n\n\n”+“无挂起列表”+”\n\n\n”);
tv1.setText(“”);
tv2.setText(“”);
tv3.setText(“”);
}
其他的
{
String j=String.valueOf(jArray.length());
tv.setText(“有“+j+”申请需要您的批准”);

对于(int i=0;i首先查找获得焦点的视图,不允许列表在所有其他视图中聚焦触摸

  • focusable=false
    focusintouchMode=false
    xml


如果仍然不允许单击您的
列表视图
,则可以再次分享您的问题。

首先查找正在获得焦点的视图,并且在所有其他视图中不允许列表聚焦触摸

  • focusable=false
    focusintouchMode=false
    xml


如果仍然不允许单击您的
列表视图
,则可以再次共享您的问题。

当列表上的另一个对象可聚焦或可单击时,会出现此类问题。解决方法是:

  • 检查布局xml文件,确保列表中所有视图的
    android:clickable
    均未设置为true

  • 避免使用任何可点击的视图,如列表上的按钮,因为这会使列表不可点击


  • 当列表中的另一个对象可聚焦或可单击时,就会出现此类问题。解决方法是:

  • 检查布局xml文件,确保列表中所有视图的
    android:clickable
    均未设置为true

  • 避免使用任何可点击的视图,如列表上的按钮,因为这会使列表不可点击


  • 似乎您的视图在listview中没有聚焦。这是单击列表行时的视图问题,它始终是捕获其他视图事件。请将以下属性应用于行文件(list_pending.xml)中的主布局,并让我知道其是否有效

    android:descendantFocusability="blocksDescendants"
    
    或以编程方式

     listView.setDescendantFocusability(ListView.FOCUS_BLOCK_DESCENDANTS);
    

    似乎您的视图在listview中没有聚焦。这是单击列表行时的视图问题,它始终是捕获其他视图事件。请将以下属性应用于行文件(list_pending.xml)中的主布局,并让我知道其是否有效

    android:descendantFocusability="blocksDescendants"
    
    或以编程方式

     listView.setDescendantFocusability(ListView.FOCUS_BLOCK_DESCENDANTS);
    

    您使用的是自定义
    SimpleAdapter
    还是默认值?我使用的是SimpleAdapter。您使用的是自定义
    SimpleAdapter
    还是默认值?我使用的是SimpleAdapter。仍然不起作用..可聚焦false应该与自定义布局中的其他视图一起使用,而不是在listview项中仍然不起作用..可聚焦false应该与其他视图一起使用在自定义布局中为listview添加视图,而不在listview项中