- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我看过很多帖子,很多教程,但我找不到完成这项工作的关键。我有一个带有好友请求的 ListView ,因为你看到这些请求有 2 个按钮(接受或拒绝),我想知道我怎么知道点击了哪个按钮(目前它甚至无法告诉我是否点击了一个项目).
请帮忙,我很绝望。
这是 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();
}
}
}
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>
以及关于 single_request 布局的代码
<?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
未被调用,因为在您的行中有 Button
。添加
android:descendantFocusability="blocksDescendants"
到你的 single_request
布局的根
关于android - ListView onItemClickListener 不工作 Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25033669/
类型new AdapterView.OnItemClickListener(){}必须实现继承的抽象方法AdapterView.OnItemClickListener.onItemClick(Adap
当我在以下位置输入此代码时,出现“OnItemClickListener 无法解析为类型”的错误: package com.funkystudios.android.facts; import and
我已经检查过解决方案 here , here , here和 here 。它们都不适合我。 我的问题如下:我有一个仅由复选框组成的 ListView。我想在单击复选框后立即将相关复选框的当前状态保存到
我在 Android Studio 中设置了一个 Listview,但需要帮助编写 OnItemClickListner。 我已经尝试过该代码,但似乎不起作用。 public class MainAc
啊,我在这里做错了什么我已经为 ListView 和 onClick 设置了 onItemClickListener将它带到不同的 Activity ,但它告诉我它必须使用 OnItemClickli
我有一个 fragment ,其中包含一个 recyclerview,它有一个交错的网格布局管理器,其中 View 持有者只有一个图像。我试图在选择菜单选项(删除图标)后为 recyclerView
DataAccess data = new DataAccess(db); List countries = data.getCountries(); setListAdapter(new Array
我正在寻求构建一个程序,让用户从文本列表中点击,这会将他们带到另一个 Activity 。 我知道 RecyclerView 没有点击监听器,就像 ListView 一样,但是经过几次尝试,我无法让它
我想要 OnitemClickListener 用于 listview 但它对我不起作用。它给 Logcat 错误。 您的内容必须有一个 ListView ,其 id 属性为 R.id.list 我的
我在 GridView 中有一个 ItemClickListener。但是我的 itemclicklistener 没有被调用。 gridview 的项目点击没有 Activity @Override
我有两个列表,一个是自定义适配器,另一个是数组适配器。所以我希望 onItemClickListener 与自定义适配器 ListView 一起使用,并且当我开始对数组适配器使用相同的 ListVie
我有一个药物列表,当用户点击其中一个药物时,它将转到下一个显示药物详细信息的 Activity .. 下面的代码是带有药物列表的 Activity ..我知道我必须使用onclicklistener.
我认为这个问题说明了一切:我想为 ListView 创建自定义 OnItemClickListener。我想添加和更改 OnItemClickListener 的参数,但我如何创建自己的参数以便在我单
我有一个列表 fragment 显示我的自定义列表项,它由包含图像和文本等的相对布局组成。
我在类中有两个 listview,我不想为每个 listview 实现 OnClickListener,而是希望类实现 OnClickListener 并在单个覆盖方法 OnClickListener
我想在此 ListView 中实现 OnItemClickListener ,但是当我为此添加代码时,即使没有错误,我的应用程序也无法运行。当我单击 Listview 项目时,它会自动关闭。请帮助我,
我正在申请。我想从网络上的 Json 文件中获取一些信息。这行得通。现在我想要一个 onItemClickListener 到带有内容的 ListView 的项目。 onItemClickListen
我在从 ListItems 中获取选定的字符串时遇到一个问题,例如:考虑我的 ListItem 有一些元素只是被认为是一个,两个,三个出现在我的 taskLit 中,现在如果我点击 ListItem
我为 AutoCompleteTextView 设置了 setOnItemClickListener,并在 onItemClick 中,我已经根据所选值实现了需要发生的情况。该程序通过查看所选项目的索
我是 Android 开发的新手,我正在尝试构建一个 ListView,它使用 gson 从 Web 服务获取数据。我有一个模型类、一个列表类、一个适配器类和一个 Activity 类。 该列表工作正
我是一名优秀的程序员,十分优秀!