我有自定义列表视图与listactivity的问题 我希望当我从列表视图中点击项目时,将开始新的活动。
Entitiy
package com.custom.listview;
public class EntitasRestoran {
String namaresto = "";
String alamatresto = "";
int pic;
public String getNamaResto() {
return namaresto;
}
public void setNamaResto(String n) {
this.namaresto = n;
}
public String getAlamatResto() {
return alamatresto;
}
public void setAlamatResto(String a) {
this.alamatresto = a;
}
public int getPicResto() {
return pic;
}
public void setPicResto(int p) {
this.pic = p;
}
}
自定义适配器
package com.custom.listview;
import java.util.ArrayList;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class CustomBaseAdapter extends BaseAdapter {
private static ArrayList<EntitasRestoran> restoran;
private LayoutInflater mInflater;
public CustomBaseAdapter(Context context, ArrayList<EntitasRestoran> res) {
restoran = res;
mInflater = LayoutInflater.from(context);
}
public int getCount() {
return restoran.size();
}
public Object getItem(int position) {
return restoran.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater
.inflate(R.layout.custom_item_listview, null);
holder = new ViewHolder();
holder.nama = (TextView) convertView
.findViewById(R.id.namarestoran);
holder.alamat = (TextView) convertView
.findViewById(R.id.alamatrestoran);
holder.im = (ImageView) convertView.findViewById(R.id.img);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.nama.setText(restoran.get(position).getNamaResto());
holder.alamat.setText(restoran.get(position).getAlamatResto());
holder.im.setBackgroundResource(restoran.get(position).getPicResto());
return convertView;
}
static class ViewHolder {
TextView nama;
TextView alamat;
ImageView im;
}
}
主要活动
package com.custom.listview;
import java.util.ArrayList;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.ListView;
public class MainActivity extends Activity {
ListView lv;
ArrayList<EntitasRestoran> restoran = new ArrayList<EntitasRestoran>();
EntitasRestoran entitasrestoran;
String[] arrayRestoran = { "Kare Ayam", "Spesial Sambal", "Waroeng Steak",
"Hoka Bento" };
String[] arrayAlamat = { "Jalan Kartini", "Jalan Bimo", "Jalan Arjuno",
"Jalan Merdeka" };
int[] ArrayPicRestoran = { R.drawable.kareayam, R.drawable.ss,
R.drawable.ws, R.drawable.hokben };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.listView1);
for (int i = 0; i < arrayRestoran.length; i++) {
entitasrestoran = new EntitasRestoran();
entitasrestoran.setNamaResto(arrayRestoran[i]);
entitasrestoran.setAlamatResto(arrayAlamat[i]);
entitasrestoran.setPicResto(ArrayPicRestoran[i]);
restoran.add(entitasrestoran);
}
CustomBaseAdapter custom = new CustomBaseAdapter(this, restoran);
lv.setAdapter(custom);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
当我点击该列表视图时,将显示新活动
答案 0 :(得分:1)
在此行之后:lv.setAdapter(custom);
这样做:
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
//write your code here that will start a new intent, something like:
Intent intent = new Intent(this, Activity2.class);
startActivity(intent);
});
答案 1 :(得分:1)
添加:
lv.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id)
{
// In the following line "v" refers to the View returned by the `getView()` method; meaning the clicked View.
TextView txtName = (TextView)v.findViewById(R.id.yourTextViewID);
String name = txtName.getText().toString();
switch(name)
{
case "nameOne":
Intent intent = new Intent(YourCurrentActivity.this, NameOneActivity.class);
startActivity(intent);
break;
case "nameTwo":
Intent intent = new Intent(YourCurrentActivity.this, NameTwoActivity.class);
startActivity(intent);
break;
//And so on and so forth....
}
}
});
后
lv.setAdapter(custom);
。
当然,请将YourCurrentActivity
和YourNextActivity
替换为相应的名称。
Intents
用于启动其他活动。
您还可以使用intent.putExtra("extraValue", theValue);
将变量值从一个活动传递到另一个活动。
有关Intents
here的更多信息。