如何使用 Hashmap 使 Android ListView 可点击?
How to make Android ListView clickable using Hashmap?
首先,我很抱歉,因为之前已经有人问过类似的问题。我试过了,但它在我的程序中不起作用。因此,我需要你的一些帮助来帮助我完成我的程序。谢谢。
问题:我的列表无法点击进入下一个activity。
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();
}
});
}
}
它成功显示了数据库中的数据,但无法点击。
首先找到 views 获得 focus 而不允许 list在所有其他 视图 中 关注 和 接触 放置
focusable=false
和 focusintouchMode=false
在 xml
如果它仍然不允许您的 listview
被点击,那么可以再次分享您的问题。
当列表中的另一个对象可聚焦或可单击时,会出现此类问题。解决办法是:
检查您的布局 xml 文件并确保列表中的 none 视图的 android:clickable
设置为 true。
避免在您的列表中使用任何可点击的视图,例如按钮,因为这会使您的列表不可点击。
您的视图似乎没有在listview.It的视图问题中单击列表行时获取焦点,它始终捕获其他视图事件。在行文件 (list_pending.xml) 中应用下面 属性 到你的主布局,让我知道它是否有效?
android:descendantFocusability="blocksDescendants"
或以编程方式
listView.setDescendantFocusability(ListView.FOCUS_BLOCK_DESCENDANTS);
首先,我很抱歉,因为之前已经有人问过类似的问题。我试过了,但它在我的程序中不起作用。因此,我需要你的一些帮助来帮助我完成我的程序。谢谢。
问题:我的列表无法点击进入下一个activity。
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();
}
});
}
}
它成功显示了数据库中的数据,但无法点击。
首先找到 views 获得 focus 而不允许 list在所有其他 视图 中 关注 和 接触 放置
focusable=false
和focusintouchMode=false
在 xml
如果它仍然不允许您的 listview
被点击,那么可以再次分享您的问题。
当列表中的另一个对象可聚焦或可单击时,会出现此类问题。解决办法是:
检查您的布局 xml 文件并确保列表中的 none 视图的
android:clickable
设置为 true。避免在您的列表中使用任何可点击的视图,例如按钮,因为这会使您的列表不可点击。
您的视图似乎没有在listview.It的视图问题中单击列表行时获取焦点,它始终捕获其他视图事件。在行文件 (list_pending.xml) 中应用下面 属性 到你的主布局,让我知道它是否有效?
android:descendantFocusability="blocksDescendants"
或以编程方式
listView.setDescendantFocusability(ListView.FOCUS_BLOCK_DESCENDANTS);