Android 从列表视图中获取数据单击位置
我使用以下方法从远程JSON文件填充listview:Android 从列表视图中获取数据单击位置,android,Android,我使用以下方法从远程JSON文件填充listview: private class GetHttpResponseReuniones extends AsyncTask<Void, Void, Void> { public Context context; String ResultHolder; List<SubastasHome> subastasHomeList; public GetHttpResponseReunion
private class GetHttpResponseReuniones extends AsyncTask<Void, Void, Void>
{
public Context context;
String ResultHolder;
List<SubastasHome> subastasHomeList;
public GetHttpResponseReuniones(Context context)
{
this.context = context;
}
@Override
protected void onPreExecute()
{
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... arg0)
{
String URLFinal = ServerURLReuniones;
HttpServicesClass httpServiceObject = new HttpServicesClass(URLFinal);
try
{
httpServiceObject.ExecutePostRequest();
if(httpServiceObject.getResponseCode() == 200)
{
ResultHolder = httpServiceObject.getResponse();
if(ResultHolder != null)
{
JSONArray jsonArray = null;
try {
jsonArray = new JSONArray(ResultHolder);
JSONObject jsonObject;
SubastasHome SubastasHome;
subastasHomeList = new ArrayList<SubastasHome>();
for(int i=0; i<jsonArray.length(); i++)
{
SubastasHome = new SubastasHome();
jsonObject = jsonArray.getJSONObject(i);
Log.d("SUBASTAS ","SUBASTAS:"+jsonObject);
SubastasHome.id_subasta = jsonObject.getString("id_subasta");
SubastasHome.marca = jsonObject.getString("marca");
SubastasHome.modelo = jsonObject.getString("modelo");
SubastasHome.ano = jsonObject.getString("ano");
SubastasHome.foto = jsonObject.getString("foto");
SubastasHome.referencia = jsonObject.getString("referencia");
SubastasHome.titulo = jsonObject.getString("titulo");
SubastasHome.descripcion = jsonObject.getString("descripcion");
SubastasHome.empieza = jsonObject.getString("empieza");
SubastasHome.termina = jsonObject.getString("termina");
SubastasHome.comprador = jsonObject.getString("comprador");
SubastasHome.vendedor = jsonObject.getString("vendedor");
SubastasHome.puja_ganadora = jsonObject.getString("puja_ganadora");
SubastasHome.generacion = jsonObject.getString("generacion");
SubastasHome.serie = jsonObject.getString("serie");
SubastasHome.motor = jsonObject.getString("motor");
SubastasHome.total_pujas = jsonObject.getString("total_pujas");
SubastasHome.mejor_precio = jsonObject.getString("mejor_precio");
// cumpleanos.SubjectName2 = jsonObject.getString("subjects2");
String termina = jsonObject.getString("termina");
//COUNTDOWN here
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String datetermina = termina;
try {
date1 = (Date) formatter.parse(datetermina);
} catch (ParseException e) {
e.printStackTrace();
}
date2 = Calendar.getInstance().getTime();
diff = date1.getTime() - date2.getTime();
Log.d("TERMINA","termina:date diff "+diff);
long dias = TimeUnit.HOURS.toDays(TimeUnit.MILLISECONDS.toHours(diff));
long horas = (TimeUnit.MILLISECONDS.toHours(diff) - TimeUnit.DAYS.toHours(TimeUnit.MILLISECONDS.toDays(diff)));
long mins =(TimeUnit.MILLISECONDS.toMinutes(diff) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(diff)));
long seconds = ((TimeUnit.MILLISECONDS.toSeconds(diff) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(diff))));
SubastasHome.termina = dias+"d "+horas+"h "+mins+"m ";
if (dias < 0 && horas <0 && mins < 0){
SubastasHome.termina = "Finalizada";
}
subastasHomeList.add(SubastasHome);
}
}
catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
else
{
Toast.makeText(context, httpServiceObject.getErrorMessage(), Toast.LENGTH_SHORT).show();
}
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result)
{
progressBarSubject.setVisibility(View.GONE);
//CumplesListView.setVisibility(View.VISIBLE);
if(subastasHomeList != null)
{
ListAdapterClassSubastasHome adapter = new ListAdapterClassSubastasHome(subastasHomeList, context);
SubastasListView.setAdapter(adapter);
}
}
}
私有类GetHttpResponseReunions扩展异步任务
{
公共语境;
字符串结果文件夹;
列出亚视距表;
公共GetHttpResponseReunions(上下文)
{
this.context=上下文;
}
@凌驾
受保护的void onPreExecute()
{
super.onPreExecute();
}
@凌驾
受保护的Void doInBackground(Void…arg0)
{
字符串URLFinal=serverurlreunions;
HttpServicesClass httpServiceObject=新的HttpServicesClass(URLFinal);
尝试
{
httpServiceObject.ExecutePostRequest();
如果(httpServiceObject.getResponseCode()==200)
{
ResultHolder=httpServiceObject.getResponse();
if(ResultHolder!=null)
{
JSONArray JSONArray=null;
试一试{
jsonArray=新的jsonArray(ResultHolder);
JSONObject JSONObject;
浅海岸浅海岸;
substatshomeList=新的ArrayList();
对于(inti=0;istringid;
SubStatsListView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
id=子STATSHOMELIST.get(位置).id\u子STA;
//类似地,单击项可以检索其余字段
}
});
字符串id;
SubStatsListView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
id=子STATSHOMELIST.get(位置).id\u子STA;
//类似地,单击项可以检索其余字段
}
});
您可以通过getter和setter刚刚创建的方法来实现它,如下所示。然后执行asyncTask您将需要async task扩展的类的对象,然后通过其对象获得getList方法
List<SubastasHome> tempList = new ArrayList<>(); // Create tempList at top of the class..
@Override
protected void onPostExecute(Void result)
{
progressBarSubject.setVisibility(View.GONE);
//CumplesListView.setVisibility(View.VISIBLE);
if(subastasHomeList != null)
{
setList(subastasHomeList); // there set the List..
ListAdapterClassSubastasHome adapter = new ListAdapterClassSubastasHome(subastasHomeList, context);
SubastasListView.setAdapter(adapter);
}
}
public void setList(List<SubastasHome> mSubastasHomeList){
tempList = mSubastasHomeList;
}
public List<SubastasHome> getList(){
return tempList;
}
List templast=new ArrayList();//在类的顶部创建templast。。
@凌驾
受保护的void onPostExecute(void结果)
{
progressBarSubject.setVisibility(View.GONE);
//cumpleListView.setVisibility(View.VISIBLE);
if(substatshomeList!=null)
{
setList(substatshomelist);//在那里设置列表。。
ListAdapterClassSubStatsHome adapter=新ListAdapterClassSubStatsHome(SubStatsHomeList,上下文);
substatsListView.setAdapter(适配器);
}
}
公共无效集合列表(列表mSubastasHomeList){
圣殿骑士=mSubastasHomeList;
}
公共列表getList(){
返回圣殿骑士;
}
存在具有AsyncTask和执行线程的类的make对象
GetHttpResponseReuniones getHttpResp = new GetHttpResponseReuniones();
getHttpResp.execute();
SubastasListView.setClickable(true);
SubastasListView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick (AdapterView < ? > parent, View view,int position, long id){
SubastasHome subastasHome = getHttpResp.getList().get(position); // there get object..
subastasHome.get....() /// get your data from this object.....
}
}
GetHttpResponseReunions getHttpResp=new GetHttpResponseReunions();
getHttpResp.execute();
SubStatsListView.setClickable(真);
SubStatsListView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView<?>父级、视图、整型位置、长id){
substatshome substatshome=getHttpResp.getList().get(位置);//有get对象。。
substatshome.get….()///从此对象获取数据。。。。。
}
}
您可以通过getter和setter刚刚创建的方法来实现它,如下所示。然后执行asyncTask您将需要async task扩展的类的对象,然后通过其对象获得getList方法
List<SubastasHome> tempList = new ArrayList<>(); // Create tempList at top of the class..
@Override
protected void onPostExecute(Void result)
{
progressBarSubject.setVisibility(View.GONE);
//CumplesListView.setVisibility(View.VISIBLE);
if(subastasHomeList != null)
{
setList(subastasHomeList); // there set the List..
ListAdapterClassSubastasHome adapter = new ListAdapterClassSubastasHome(subastasHomeList, context);
SubastasListView.setAdapter(adapter);
}
}
public void setList(List<SubastasHome> mSubastasHomeList){
tempList = mSubastasHomeList;
}
public List<SubastasHome> getList(){
return tempList;
}
List templast=new ArrayList();//在类的顶部创建templast。。
@凌驾
受保护的void onPostExecute(void结果)
{
progressBarSubject.setVisibility(View.GONE);
//cumpleListView.setVisibility(View.VISIBLE);
if(substatshomeList!=null)
{
setList(substatshomelist);//在那里设置列表。。
ListAdapterClassSubStatsHome adapter=新ListAdapterClassSubStatsHome(SubStatsHomeList,上下文);
substatsListView.setAdapter(适配器);
}
}
公共无效集合列表(列表mSubastasHomeList){
圣殿骑士=mSubastasHomeList;
}
公共列表getList(){
返回圣殿骑士;
}
存在具有AsyncTask和执行线程的类的make对象
GetHttpResponseReuniones getHttpResp = new GetHttpResponseReuniones();
getHttpResp.execute();
SubastasListView.setClickable(true);
SubastasListView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick (AdapterView < ? > parent, View view,int position, long id){
SubastasHome subastasHome = getHttpResp.getList().get(position); // there get object..
subastasHome.get....() /// get your data from this object.....
}
}
GetHttpResponseReunions getHttpResp=new GetHttpResponseReunions();
getHttpResp.execute();
SubStatsListView.setClickable(真);
SubStatsListView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView<?>父级、视图、整型位置、长id){
substatshome substatshome=getHttpResp.getList().get(位置);//有get对象。。
substatshome.get….()///从此对象获取数据。。。。。
}
}
为什么不在监听器内部使用substatashomelist.get(position)
呢?@SusmitAgrawal,我知道,但我得到的是位置,而不是该位置的数据为什么不在监听器内部使用substatashomelist.get(position)