我想在我的listview上放置onItemClick监听器...但是当我点击listview时什么也没发生.. 这是我的代码......任何人都可以建议我怎么做这个.. ??
这是我的XML文件(list.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:background="@drawable/listbg">
<!-- For the Header Part -->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="35dip"
android:background="#EE7621">
<Button
android:id="@+id/menuButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/backhome"
>
</Button>
<TextView
android:text="Pantries"
android:layout_height="wrap_content"
android:layout_width="210dip"
android:gravity="center"
android:shadowColor="#3B3B3B"
android:textColor="#FFFFFF"
android:textSize="20dip"
android:textStyle="bold">
</TextView>
<Button
android:id="@+id/allonmap"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/allonmap"
>
</Button>
</LinearLayout>
<!-- For the List View -->
<TextView android:text="Total Pantries"
android:id="@+id/totalPantries"
android:gravity="center"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#F2F2F2"
android:background="#B3B3B3">
</TextView>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_height="wrap_content"
android:layout_width="wrap_content">
<ListView
android:id="@+id/android:list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<!-- For the Footer Part -->
<RelativeLayout
android:orientation="vertical"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:layout_centerHorizontal="true"
android:gravity="bottom">
<ImageView
android:id="@+id/footerview"
android:src="@drawable/footer"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_gravity="center">
</ImageView>
</RelativeLayout>
</RelativeLayout>
</LinearLayout>
这是我的Row.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<RelativeLayout
android:id="@+id/mainContent"
android:orientation="vertical"
android:layout_width="300dip"
android:layout_height="fill_parent">
<TextView
android:id="@+id/pantryName"
android:layout_marginTop="8dip"
android:layout_marginLeft="10dip"
android:text="name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textStyle="bold"
android:textSize="16dip"
android:textColor="#00AF33"
android:gravity="center_vertical"
/>
<TextView
android:layout_below="@id/pantryName"
android:textColor="#242424"
android:text="address1"
android:layout_marginTop="8dip"
android:layout_marginLeft="10dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/pantryAddress1"
/>
<TextView
android:layout_below="@id/pantryAddress1"
android:textColor="#242424"
android:text="address2"
android:layout_marginLeft="10dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/pantryAddress2"
/>
<Button android:layout_below="@+id/pantryAddress2"
android:layout_width="wrap_content"
android:id="@+id/phbtn"
android:layout_marginLeft="10dip"
android:layout_height="wrap_content"
android:background="@drawable/phonecall"
></Button>
<TextView
android:layout_toRightOf="@id/phbtn"
android:layout_width="fill_parent"
android:layout_below="@id/pantryAddress2"
android:textColor="#242424"
android:layout_marginLeft="10dip"
android:layout_height="wrap_content"
android:id="@+id/pantryPhno"
/>
<TextView
android:layout_below="@id/pantryPhno"
android:textColor="#242424"
android:textSize="10dip"
android:layout_marginLeft="12dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/distTime"
/>
</RelativeLayout>
<Button android:layout_width="wrap_content"
android:background="@drawable/next"
android:layout_marginTop="45dip"
android:layout_marginRight="7dip"
android:layout_alignParentRight="true"
android:id="@+id/nextBtn"
android:layout_height="wrap_content"
></Button>
</RelativeLayout>
这是我的java文件......
package com.pantylocator;
import java.net.URL;
import java.util.ArrayList;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class PantriesListActivity extends ListActivity
{
PantreisInfo parsedPantry;
ImageAdapter m_adapter;
TextView totalPantries;
public Button allOnMap,pantrySelection;
public static ArrayList<PantreisInfo> m_pantries=new ArrayList<PantreisInfo>();
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
this.m_adapter=new ImageAdapter(this, R.layout.row, m_pantries);
setListAdapter(this.m_adapter);
setContentView(R.layout.list);
ListView lv = getListView();
lv.setTextFilterEnabled(true);
Bundle bundle = this.getIntent().getExtras();
String parseURL = bundle.getString("url");
lv.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> parent, View view,int Position,long id)
{
Toast.makeText(getApplicationContext(),"Clicked",Toast.LENGTH_LONG).show();
}
});
parseURL(parseURL);
parsedPantry=PanatriesHandler.getPantries();
PantreisInfo pantry[]=null;
pantry =new PantreisInfo[parsedPantry.getID().size()];
for(int i=0;i<parsedPantry.getID().size();i++)
{
String temp_id=parsedPantry.getID().get(i);
String temp_name=parsedPantry.getName().get(i);
String temp_add1=parsedPantry.getAddress1().get(i);
String temp_add2=parsedPantry.getAddress2().get(i);
String temp_phno=parsedPantry.getPhone().get(i);
String temp_distTime=parsedPantry.getDistTime().get(i);
String temp_lat=parsedPantry.getGeo_lat().get(i);
String temp_long=parsedPantry.getGeo_long().get(i);
pantry[i]=new PantreisInfo();
pantry[i].setId(temp_id);
pantry[i].setName(temp_name);
pantry[i].setAddress1(temp_add1);
pantry[i].setAddress2(temp_add2);
pantry[i].setPhone(temp_phno);
pantry[i].setDistTime(temp_distTime);
pantry[i].setGeoLat(temp_lat);
pantry[i].setGeoLong(temp_long);
m_pantries.add(pantry[i]);
}
totalPantries=(TextView)findViewById(R.id.totalPantries);
totalPantries.setText("Total "+parsedPantry.getID().size()+" Pantries");
allOnMap=(Button)findViewById(R.id.allonmap);
allOnMap.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
Toast.makeText(PantriesListActivity.this,
"Wait..map is being loaded",Toast.LENGTH_SHORT).show();
Intent myIntent;
myIntent=new Intent(PantriesListActivity.this, PantriesOnMap.class);
startActivityForResult(myIntent, 0);
// TODO Auto-generated method stub
}
});
}
void parseURL(String url)
{
try
{
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
URL sourceUrl = new URL(url);
PanatriesHandler pantriesHandler=new PanatriesHandler();
xr.setContentHandler(pantriesHandler);
xr.parse(new InputSource(sourceUrl.openStream()));
}
catch(Exception e)
{
System.out.println("==================>Exception Raised==>"+e);
}
}
class ImageAdapter extends ArrayAdapter<PantreisInfo>
{
private ArrayList<PantreisInfo> items;
public ImageAdapter(Context context,
int textViewResourceId,ArrayList<PantreisInfo> items)
{
super(context, textViewResourceId, items);
this.items = items;
}
public View getView(int position, View convertView, ViewGroup parent)
{
View v = convertView;
if (v == null)
{
try
{
LayoutInflater vi = (LayoutInflater)
getSystemServiceContext.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.row, null);
}
catch(Exception e)
{
System.out.println("Excption Caught"+e);
}
}
PantreisInfo p = items.get(position);
if (p != null)
{
TextView name = (TextView) v.findViewById(R.id.pantryName);
TextView add1= (TextView) v.findViewById(R.id.pantryAddress1);
TextView add2=(TextView)v.findViewById(R.id.pantryAddress2);
TextView phno = (TextView) v.findViewById(R.id.pantryPhno);
TextView distTime = (TextView) v.findViewById(R.id.distTime);
if (name != null)
{
name.setText(p.getName().get(0).toString());
}
if (add1 != null)
{
add1.setText(p.getAddress1().get(0).toString());
}
if (add2 != null)
{
add2.setText(p.getAddress2().get(0).toString());
}
if (phno != null)
{
phno.setText(p.getPhone().get(0).toString());
}
if (distTime!= null)
{
distTime.setText("Distribution Time: "+p.getDistTime().get(0).toString());
}
}
return v;
}
}
}
提前感谢.....
答案 0 :(得分:1)
您可以使用覆盖方法,而不是设置clikclistener lv.setOnItemClickListener(new OnItemClickListener()
,
由ListActivity提供的protected void onListItemClick(ListView l, View v, int position, long id)
答案 1 :(得分:1)
嗨nirav获取一个onItem点击列表你必须编写我在你的代码中找不到的onclickListener试试。
答案 2 :(得分:1)
public void onItemClick(AdapterView<?> parent,
View view1, int position, long id) {
// The action to be taken when item is clicked
}
答案 3 :(得分:0)
SimpleAdapter adapter = new SimpleAdapter(this,
groupData,
R.layout.listitem,
new String[] {"name" , "id"},
new int[]{ R.id.txtItemName, R.id.txtid} );
lv.setAdapter(adapter);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3){
//u get positon of list item from arg2
}
});