custom Listview Start new activity

匿名 (未验证) 提交于 2019-12-03 00:44:02

问题:

Hi i have problem with custom listview with listactivity i want when i click item from listview then new activity will started.

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;     } } 

Custom adapter

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;     } } 

Main Activity

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;     }  } 

when i click that listview then new activity will show up

回答1:

Add:

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....          }      } }); 

after lv.setAdapter(custom);.


Of course, replace YourCurrentActivity and YourNextActivity with the corresponding names.

Intents are used to start up other activities. You can also use intent.putExtra("extraValue", theValue); to pass variable values from one activity to another.


More information about Intents here.



回答2:

After this line: lv.setAdapter(custom);

do this:

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); }); 


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!