Android Listview和baseadapter
我已经使用baseadapter创建了listview。 我想去不同的活动时,点击不同的项目,但无法获得项目的价值。所以任何人都可以帮助我如何做。 例如,单击项目x时,我要执行活动1 单击项目say z,我想转到AVActivity2 多谢各位 以下是代码:Android Listview和baseadapter,android,listview,Android,Listview,我已经使用baseadapter创建了listview。 我想去不同的活动时,点击不同的项目,但无法获得项目的价值。所以任何人都可以帮助我如何做。 例如,单击项目x时,我要执行活动1 单击项目say z,我想转到AVActivity2 多谢各位 以下是代码: public class homeScreen extends Activity{ ListView list1; @Override protected void onCreate(Bundle savedIn
public class homeScreen extends Activity{
ListView list1;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.homescreen);
list1=(ListView)findViewById(R.id.spacelist);
list1.setAdapter(new MySimpleAdapter(this));
list1.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View v, int position,long id) {
// TODO Auto-generated method stub
Intent i=new Intent(homeScreen.this, privateSpaceList.class);
startActivity(i);
}
});
}
}
class SingleRow{
String title;
int image;
public SingleRow(String title,int image) {
// TODO Auto-generated constructor stub
this.title=title;
this.image=image;
}
}
class MySimpleAdapter extends BaseAdapter{
ArrayList<SingleRow> list;
Context context;
public MySimpleAdapter(Context c) {
// TODO Auto-generated constructor stub
context=c;
list=new ArrayList<SingleRow>();
//putting actual values in array
Resources res=c.getResources();
String[] titles=res.getStringArray(R.array.titles);
int[] images={R.drawable.error,R.drawable.ic_launcher,R.drawable.ic_launcher};
//putting single row in arraylist
for(int i=0;i<3;i++)
{
list.add(new SingleRow(titles[i], images[i]));
}
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
@Override
public Object getItem(int i) {
// TODO Auto-generated method stub
return list.get(i);
}
@Override
public long getItemId(int i) {
// TODO Auto-generated method stub
return i;
}
//called when want to display row
@Override
public View getView(int i, View view, ViewGroup viewgroup) {
// TODO Auto-generated method stub
LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row=inflater.inflate(R.layout.single_row,viewgroup,false);
TextView title=(TextView)row.findViewById(R.id.label);
ImageView image=(ImageView)row.findViewById(R.id.imageView);
SingleRow temp=list.get(i);
title.setText(temp.title);
image.setImageResource(temp.image);
return row;
}
}
公共类主屏幕扩展活动{
列表视图列表1;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
setContentView(右布局主屏幕);
list1=(ListView)findViewById(R.id.spacelist);
列表1.setAdapter(新的mysimpledapter(this));
list1.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView arg0,视图v,内部位置,长id){
//TODO自动生成的方法存根
意图i=新意图(homeScreen.this、privateSpaceList.class);
星触觉(i);
}
});
}
}
类单列{
字符串标题;
int图像;
公共单行(字符串标题,整型图像){
//TODO自动生成的构造函数存根
这个.title=title;
这个。图像=图像;
}
}
类MySimpleAdapter扩展了BaseAdapter{
数组列表;
语境;
公共mysimpledapter(上下文c){
//TODO自动生成的构造函数存根
上下文=c;
列表=新的ArrayList();
//将实际值放入数组
Resources res=c.getResources();
String[]titles=res.getStringArray(R.array.titles);
int[]images={R.drawable.error,R.drawable.ic_launcher,R.drawable.ic_launcher};
//将单行放入arraylist
对于(int i=0;i我认为在适配器类中的getView上实现ClickListener是一种简单的方法。或者,在您需要存储列表的情况下,也可以将此列表添加到适配器中,此时:
@Override
public void onItemClick(AdapterView<?> arg0, View v, int position,long id) {
Intent intent = new Intent(homeScreen.this, privateSpaceList.class);
yourList.get(position) // your data
startActivity(intent);
}
@覆盖
public void onItemClick(AdapterView arg0,视图v,内部位置,长id){
意向意向=新意向(homeScreen.this,privateSpace.class);
yourList.get(position)//您的数据
星触觉(意向);
}
你得到你的目标了
或者像这样:
@Override
public void onItemClick(AdapterView<?> arg0, View v, int position,long id) {
switch(position) {
case 1:
Intent intent = new Intent(homeScreen.this, privateSpaceList.class);
startActivity(intent);
break;
}
}
@覆盖
public void onItemClick(AdapterView arg0,视图v,内部位置,长id){
开关(位置){
案例1:
意向意向=新意向(homeScreen.this,privateSpace.class);
星触觉(意向);
打破
}
}
试试这个
list1.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View v, int position,long id) {
// TODO Auto-generated method stub
TextView title=(TextView)v.findViewById(R.id.label);
if(title.getText().toString().trim().equals("Item x"))
{
Intent i=new Intent(homeScreen.this, activity1.class);
startActivity(i);
}
else if(title.getText().toString().trim().equals("Item y"))
{
Intent i=new Intent(homeScreen.this, activity2.class);
startActivity(i);
}
else if(title.getText().toString().trim().equals("Item z"))
{
Intent i=new Intent(homeScreen.this, activity3.class);
startActivity(i);
}
}
});
list1.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView arg0,视图v,内部位置,长id){
//TODO自动生成的方法存根
TextView title=(TextView)v.findViewById(R.id.label);
if(title.getText().toString().trim().equals(“项x”))
{
意图i=新意图(主屏幕.this,activity1.class);
星触觉(i);
}
else if(title.getText().toString().trim().equals(“项y”))
{
意向i=新意向(主屏幕。此,活动2。类);
星触觉(i);
}
else if(title.getText().toString().trim().equals(“项z”))
{
意向i=新意向(主屏幕。此,活动3。类);
星触觉(i);
}
}
});
在您的物品上单击将代码更改为
list1.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View v, int position,long id) {
// TODO Auto-generated method stub
String[] titles=res.getStringArray(R.array.titles);
if((titles[position]).equalsIgnoreCase("Itemx"))
{
Intent i=new Intent(homeScreen.this, privateSpaceList.class);
startActivity(i);
}
else if((titles[position]).equalsIgnoreCase.equals("Itemy"))
{
Intent i=new Intent(homeScreen.this, activity2.class);
startActivity(i);
}
else if((titles[position]).equalsIgnoreCase.equals("Itemz"))
{
Intent i=new Intent(homeScreen.this, activity3.class);
startActivity(i);
}
}
});
list1.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView arg0,视图v,内部位置,长id){
//TODO自动生成的方法存根
String[]titles=res.getStringArray(R.array.titles);
如果((标题[职位])等信号情况(“项目X”))
{
意图i=新意图(homeScreen.this、privateSpaceList.class);
星触觉(i);
}
如果((头衔[职位])相等,则等于(“项目”)
{
意向i=新意向(主屏幕。此,活动2。类);
星触觉(i);
}
如果((标题[位置]).equalsIgnoreCase.equals(“项目Z”))
{
意向i=新意向(主屏幕。此,活动3。类);
星触觉(i);
}
}
});
像这样试试
这是一种非常简单的方法,无需太多条件。
String[] Classtitles=new String[]{"Activity1","Activity2","Activity3"};
定义所有活动类名的数组。但所有活动都应在同一个包中。
String[] Classtitles=new String[]{"Activity1","Activity2","Activity3"};
获取包名
final String packageName = this.getClass().getPackage().getName();
并在onItemClick()中更改
list1.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView arg0,视图v,内部位置,长id){
试一试{
c类=Class.forName(packageName+“+”类标题[位置]);
startActivity(新意图(homeScreen.this,c));
}catch(classnotfounde异常){
Toast.makeText(homeScreen.this,String.valueOf(e),5000.show();
}
}
});
希望这将对您有所帮助。设置行布局可单击您可以在侦听器中打开位置值。