ListView控件onItemClickListener不起作用的Android [英] ListView onItemClickListener does not work Android
问题描述
我见过很多帖子,大量的教程,但我找不到,使这项工作的关键。我有一个朋友请求列表视图,因为你看到这些要求有2个按钮(接受或拒绝),我想知道我怎么能知道被点击的按钮(目前它does not甚至可以告诉我,如果一个项目被点击)。
请帮忙,即时通讯一样绝望。
活动的继承人的code
进口的java.util.ArrayList;
进口的java.util.HashMap;
进口的java.util.List;
进口org.apache.http.NameValuePair;
进口org.apache.http.message.BasicNameValuePair;
进口org.json.JSONArray;
进口org.json.JSONException;
进口org.json.JSONObject;
进口android.os.AsyncTask;
进口android.os.Bundle;
进口android.app.Activity;
进口android.app.ListActivity;
进口android.app.ProgressDialog;
进口android.view.Menu;
进口android.view.View;
进口android.view.View.OnClickListener;
进口android.widget.AdapterView;
进口android.widget.Button;
进口android.widget.EditText;
进口android.widget.ListAdapter;
进口android.widget.SimpleAdapter;
进口android.widget.ListView;
进口android.widget.AdapterView.OnItemClickListener;
进口android.widget.Toast;
公共类慰问延伸活动{
私人ProgressDialog pDialog;
私有静态最后弦乐SOLICITUDES_URL =http://192.168.56.1/webservice/cargarSolicitudes.php;
JSONParser jsonParser =新JSONParser();
私人的ListView LV;
// JSON IDS:
私有静态最后弦乐TAG_POSTS =上岗;
私有静态最后弦乐TAG_USERNAME =用户名;
私人的HashMap<字符串,字符串>用户;
是SessionManager会议;
//阵列CON洛杉矶吾友
私人JSONArray mAmigos = NULL;
// organiza洛杉矶吾友EN UNA LISTA。
私人的ArrayList< HashMap的<字符串,字符串>> mAmigosList;
@覆盖
保护无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_solicitudes);
LV =(ListView控件)findViewById(R.id.listViewSolicitudes);
lv.setOnItemClickListener(新AdapterView.OnItemClickListener(){
@覆盖
公共无效onItemClick(适配器视图<>母公司视图中查看,
INT位置,长的id){
// ListView中点击过
INT itemPosition =位置;
// ListView中点击过
字符串itemValue =(字符串)lv.getItemAtPosition(位置);
//显示警报
Toast.makeText(
getApplicationContext(),
位置:+ itemPosition +列表项:
+ itemValue,Toast.LENGTH_LONG).show();
}
});
}
私人无效updateList(){
//段未ListActivity tenemos阙特纳名士表适配器。埃斯特
// simpleAdapter
//utilizaráNUESTRO ArrayList的哈希映射actualizado。 Utilizo
// single_request.xml第
// CADA项目EN LA LISTAŸ猩猩拉informaacióncorrecta第CADA ID。
ListAdapter适配器=新SimpleAdapter(这一点,mAmigosList,
R.layout.single_request,新的String [] {} TAG_USERNAME,
新的INT [] {R.id.textViewAmigoUsuario});
lv.setAdapter(适配器);
}
公共无效updateJSONdata(){
//会话类实例
会议=新SessionManager(中间getApplicationContext());
//从会话的用户数据
用户= session.getUserDetails();
字符串username = user.get(SessionManager.KEY_USERNAME);
名单<的NameValuePair> PARAMS =新的ArrayList<的NameValuePair>();
params.add(新BasicNameValuePair(用户名,用户名));
mAmigosList =新的ArrayList< HashMap的<字符串,字符串>>();
JSONObject的JSON = jsonParser.makeHtt prequest(SOLICITUDES_URL,POST,
PARAMS);
//宽多parseamos JSON ES conveniente hacer未赶上德拉斯
// excepciones
尝试 {
mAmigos = json.getJSONArray(TAG_POSTS);
// Iterando对待办事项洛杉矶阙后第devuelve埃尔objeto JSON
的for(int i = 0; I< mAmigos.length();我++){
JSONObject的C = mAmigos.getJSONObject(我);
// devuelve埃尔contenido德拉etiqueta
字符串idUser1 = c.getString(TAG_USERNAME);
// creando未索尔的HashMap
HashMap的<字符串,字符串>图=新的HashMap<字符串,字符串>();
map.put(TAG_USERNAME,idUser1);
// map.put(TAG_ID2,idUser2);
// agrego EL HashList人的ArrayList
mAmigosList.add(图)
}
}赶上(JSONException E){
e.printStackTrace();
}
}
@覆盖
公共无效onResume(){
// TODO自动生成方法存根
super.onResume();
// cargando洛杉矶吾友一个través德AsynTask
新buscarSolicitudes()执行();
}
公共类buscarSolicitudes扩展的AsyncTask<虚空,虚空,布尔> {
@覆盖
在preExecute保护无效(){
super.on preExecute();
pDialog =新ProgressDialog(getApplicationContext());
pDialog.setMessage(Cargando慰问......);
pDialog.setIndeterminate(假);
pDialog.setCancelable(真正的);
}
@覆盖
保护布尔doInBackground(虚空......为arg0){
updateJSONdata();
返回null;
}
@覆盖
保护无效onPostExecute(布尔结果){
super.onPostExecute(结果);
pDialog.dismiss();
updateList();
}
}
}
在activity_layout的code
< RelativeLayout的的xmlns:机器人=http://schemas.android.com/apk/res/android
的xmlns:工具=http://schemas.android.com/tools
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:后台=#FFFFFF
机器人:paddingBottom会=@扪/ activity_vertical_margin
机器人:以下属性来=@扪/ activity_horizontal_margin
机器人:paddingRight =@扪/ activity_horizontal_margin
机器人:paddingTop =@扪/ activity_vertical_margin
工具:上下文=Buscar。>
<的TextView
机器人:ID =@ + ID / textViewSolicitudes
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_alignParentLeft =真
机器人:layout_alignParentTop =真
机器人:layout_margin =10dp
机器人:重力=中心
机器人:文本=@字符串/慰问
机器人:文字颜色=@色/ AzulClaro/>
<的ListView
机器人:ID =@ + ID / listViewSolicitudes
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_alignLeft =@机器人:ID /空
机器人:layout_below =@ ID / textViewSolicitudes
工具:列表项=@布局/ single_request
机器人:可聚焦=假
机器人:descendantFocusability =blocksDescendants
机器人:drawSelectorOnTop =真/>
< / RelativeLayout的>
而code有关single_request布局
< XML版本=1.0编码=UTF-8&GT?;
< LinearLayout中的xmlns:机器人=http://schemas.android.com/apk/res/android
机器人:layout_width =FILL_PARENT
机器人:layout_height =WRAP_CONTENT
机器人:后台=#F0F0F0
机器人:方向=垂直>
<的LinearLayout
机器人:layout_width =match_parent
机器人:layout_height =WRAP_CONTENT
机器人:layout_margin =5DP
机器人:方向=垂直>
<的LinearLayout
机器人:ID =@ + ID / boxSF1
机器人:layout_width =match_parent
机器人:layout_height =WRAP_CONTENT
机器人:layout_margin =2DP
机器人:方向=横向>
< ImageView的
机器人:ID =@ + ID / imageUser
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:SRC =@可绘制/ perfildefecto/>
< RelativeLayout的
机器人:ID =@ + ID / boxSF2
机器人:layout_width =match_parent
机器人:layout_height =WRAP_CONTENT
机器人:layout_margin =2DP
机器人:方向=垂直
机器人:填充=5DP>
<的TextView
机器人:ID =@ + ID / textViewAmigoUsuario
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_gravity =底
机器人:paddingBottom会=2DIP
机器人:以下属性来=5DP
机器人:paddingTop =6dip
机器人:文字颜色=#333
机器人:TEXTSIZE =16SP
机器人:TEXTSTYLE =黑体/>
<按钮
机器人:ID =@ + ID / btnEliminar
机器人:layout_width =20dp
机器人:layout_height =20dp
机器人:layout_alignParentRight =真
机器人:layout_below =@ + ID / textViewSolicitud
机器人:layout_marginTop =30dp
机器人:背景=@可绘制/ denegar
机器人:最大=100/>
<按钮
机器人:ID =@ + ID / btnAgregar
机器人:layout_width =20dp
机器人:layout_height =20dp
机器人:layout_alignBaseline =@ + ID / btnEliminar
机器人:layout_alignBottom =@ + ID / btnEliminar
机器人:layout_marginRight =24dp
机器人:layout_toLeftOf =@ + ID / btnEliminar
机器人:背景=@可绘制/ aceptar
机器人:最大=100/>
<的TextView
机器人:ID =@ + ID / textViewSolicitud
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_centerHorizontal =真
机器人:layout_centerVertical =真
机器人:layout_below =@ ID / textViewAmigoUsuario
机器人:layout_margin =10dp
机器人:重力=左
机器人:文本=@字符串/ friend_request
机器人:文字颜色=@色/ AzulClaro/>
< / RelativeLayout的>
< / LinearLayout中>
< / LinearLayout中>
< / LinearLayout中>
onItemClicked
不是因为按钮名为
,在你行的。添加
安卓descendantFocusability =blocksDescendants
你的 single_request
布局的根目录
Ive seen plenty of posts, plenty of tutorials but i can't find the key to make this work. I have a listView with friend requests,as u see these requests have 2 buttons (accept or deny) and i want to know how can i know which button is clicked (At the moment it doesnt even works to tell me if an item is clicked).
Please help, im like desperate.
Heres the code of the Activity
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.app.ListActivity;
import android.app.ProgressDialog;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListAdapter;
import android.widget.SimpleAdapter;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Toast;
public class Solicitudes extends Activity {
private ProgressDialog pDialog;
private static final String SOLICITUDES_URL = "http://192.168.56.1/webservice/cargarSolicitudes.php";
JSONParser jsonParser = new JSONParser();
private ListView lv;
// JSON IDS:
private static final String TAG_POSTS = "posts";
private static final String TAG_USERNAME = "username";
private HashMap<String, String> user;
SessionManager session;
// array con los amigos
private JSONArray mAmigos = null;
// organiza los amigos en una lista.
private ArrayList<HashMap<String, String>> mAmigosList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_solicitudes);
lv = (ListView) findViewById(R.id.listViewSolicitudes);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// ListView Clicked
int itemPosition = position;
// ListView Clicked
String itemValue = (String) lv.getItemAtPosition(position);
// Show Alert
Toast.makeText(
getApplicationContext(),
"Position :" + itemPosition + " ListItem : "
+ itemValue, Toast.LENGTH_LONG).show();
}
});
}
private void updateList() {
// Para un ListActivity tenemos que tener un List Adapter. Este
// simpleAdapter
// utilizará nuestro ArrayList Hashmap actualizado. Utilizo
// single_request.xml para
// cada item en la lista y pongo la informaación correcta para cada ID.
ListAdapter adapter = new SimpleAdapter(this, mAmigosList,
R.layout.single_request, new String[] { TAG_USERNAME },
new int[] { R.id.textViewAmigoUsuario });
lv.setAdapter(adapter);
}
public void updateJSONdata() {
// Session class instance
session = new SessionManager(getApplicationContext());
// get user data from session
user = session.getUserDetails();
String username = user.get(SessionManager.KEY_USERNAME);
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("username", username));
mAmigosList = new ArrayList<HashMap<String, String>>();
JSONObject json = jsonParser.makeHttpRequest(SOLICITUDES_URL, "POST",
params);
// cuando parseamos JSON es conveniente hacer un catch de las
// excepciones
try {
mAmigos = json.getJSONArray(TAG_POSTS);
// Iterando para todos los post que nos devuelve el objeto json
for (int i = 0; i < mAmigos.length(); i++) {
JSONObject c = mAmigos.getJSONObject(i);
// devuelve el contenido de la etiqueta
String idUser1 = c.getString(TAG_USERNAME);
// creando un nuevo HashMap
HashMap<String, String> map = new HashMap<String, String>();
map.put(TAG_USERNAME, idUser1);
// map.put(TAG_ID2, idUser2);
// agrego el HashList al ArrayList
mAmigosList.add(map);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onResume() {
// TODO Auto-generated method stub
super.onResume();
// cargando los amigos a través de AsynTask
new buscarSolicitudes().execute();
}
public class buscarSolicitudes extends AsyncTask<Void, Void, Boolean> {
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(getApplicationContext());
pDialog.setMessage("Cargando solicitudes...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
}
@Override
protected Boolean doInBackground(Void... arg0) {
updateJSONdata();
return null;
}
@Override
protected void onPostExecute(Boolean result) {
super.onPostExecute(result);
pDialog.dismiss();
updateList();
}
}
}
The code of the activity_layout
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".Buscar" >
<TextView
android:id="@+id/textViewSolicitudes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_margin="10dp"
android:gravity="center"
android:text="@string/solicitudes"
android:textColor="@color/AzulClaro" />
<ListView
android:id="@+id/listViewSolicitudes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@android:id/empty"
android:layout_below="@id/textViewSolicitudes"
tools:listitem="@layout/single_request"
android:focusable="false"
android:descendantFocusability="blocksDescendants"
android:drawSelectorOnTop="true" />
</RelativeLayout>
And the code about the single_request layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#f0f0f0"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/boxSF1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="2dp"
android:orientation="horizontal" >
<ImageView
android:id="@+id/imageUser"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/perfildefecto" />
<RelativeLayout
android:id="@+id/boxSF2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="2dp"
android:orientation="vertical"
android:padding="5dp" >
<TextView
android:id="@+id/textViewAmigoUsuario"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:paddingBottom="2dip"
android:paddingLeft="5dp"
android:paddingTop="6dip"
android:textColor="#333"
android:textSize="16sp"
android:textStyle="bold" />
<Button
android:id="@+id/btnEliminar"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignParentRight="true"
android:layout_below="@+id/textViewSolicitud"
android:layout_marginTop="30dp"
android:background="@drawable/denegar"
android:max="100" />
<Button
android:id="@+id/btnAgregar"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignBaseline="@+id/btnEliminar"
android:layout_alignBottom="@+id/btnEliminar"
android:layout_marginRight="24dp"
android:layout_toLeftOf="@+id/btnEliminar"
android:background="@drawable/aceptar"
android:max="100" />
<TextView
android:id="@+id/textViewSolicitud"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_below="@id/textViewAmigoUsuario"
android:layout_margin="10dp"
android:gravity="left"
android:text="@string/friend_request"
android:textColor="@color/AzulClaro" />
</RelativeLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
onItemClicked
is not called because of the Button
, in your row. Add
android:descendantFocusability="blocksDescendants"
to the root of your single_request
layout
这篇关于ListView控件onItemClickListener不起作用的Android的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!