簡體   English   中英

如何從適配器啟動 Activity 並放置額外的項目 OnClick

[英]How to start Activity from adapter and put extra Items OnClick

覆蓋 fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { var root = convertView

    if(root == null)
      root = LayoutInflater.from(activity).inflate(R.layout.list_items, null, false)
    root!!.textViewName.text = data[position].name
    root!!.textViewName.setOnClickListener{
        var i1 = Intent(root!!.context, MainActivity::class.java)
        i1.putExtra("key2", data[position].name)
        i1.putExtra("key3", data[position].image)
       root.context.startActivity(i1)
    }

}

class MyAdapter(變量活動:活動,變量數據:ArrayList):BaseAdapter(){

override fun getCount(): Int {
    return data.size
}

override fun getItem(position: Int): Any {
    return data[position]
}

override fun getItemId(position: Int): Long {

    return data[position].id.toLong()
}

override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
    var root = convertView

    if(root == null)
      root = LayoutInflater.from(activity).inflate(R.layout.fruit_item, null, false)
    root!!.textViewName.text = data[position].name
    
    root!!.textViewName.setOnClickListener{
        var i1 = Intent(root!!.context, MainActivity::class.java)
        i1.putExtra("key2", data[position].name)
      
       root.context.startActivity(i1)
    }


    return root
}
The best for you please use interface 



 public class ListAdapter extends ArrayAdapter<String> {    
        customButtonListener customListner;    
    
        public interface customButtonListener {    
            public void onButtonClickListner(int position,String value);    
        }    
        
        public void setCustomButtonListner(customButtonListener listener) {    
            this.customListner = listener;    
        }    
        
        private Context context;    
        private ArrayList<String> data = new ArrayList<String>();    
        
        public ListAdapter(Context context, ArrayList<String> dataItem) {    
            super(context, R.layout.child_listview, dataItem);    
            this.data = dataItem;    
            this.context = context;    
        }    
        
        @Override    
        public View getView(final int position, View convertView, ViewGroup parent) {    
            ViewHolder viewHolder;    
            if (convertView == null) {    
                LayoutInflater inflater = LayoutInflater.from(context);    
                convertView = inflater.inflate(R.layout.child_listview, null);    
                viewHolder = new ViewHolder();    
                viewHolder.text = (TextView) convertView    
                        .findViewById(R.id.childTextView);    
                viewHolder.button = (Button) convertView    
                        .findViewById(R.id.childButton);    
                convertView.setTag(viewHolder);    
            } else {    
                viewHolder = (ViewHolder) convertView.getTag();    
            }    
            final String temp = getItem(position);    
            viewHolder.text.setText(temp);    
            viewHolder.button.setOnClickListener(new OnClickListener() {    
        
                @Override    
                public void onClick(View v) {    
                    if (customListner != null) {    
                        customListner.onButtonClickListner(position,temp);    
                    }    
        
                }    
            });    
        
            return convertView;    
        }    
        
        public class ViewHolder {    
            TextView text;    
            Button button;    
        }    
    }   
    
    
    ***************
    import java.util.ArrayList;    
    import java.util.Arrays;    
    import java.util.List;    
        
    import com.example.articalonlistiner.ListAdapter.customButtonListener;    
        
    import android.os.Bundle;    
    import android.support.v7.app.ActionBarActivity;    
    import android.widget.ListView;    
    import android.widget.Toast;    
        
    public class MainActivity extends ActionBarActivity implements    
            customButtonListener {    
        
        private ListView listView;    
        ListAdapter adapter;    
        ArrayList<String> dataItems = new ArrayList<String>();    
        
        @Override    
        protected void onCreate(Bundle savedInstanceState) {    
            super.onCreate(savedInstanceState);    
            setContentView(R.layout.activity_main);    
            String[] dataArray = getResources().getStringArray(R.array.listdata);    
            List<String> dataTemp = Arrays.asList(dataArray);    
            dataItems.addAll(dataTemp);    
            listView = (ListView) findViewById(R.id.listView);    
            adapter = new ListAdapter(MainActivity.this, dataItems);    
            adapter.setCustomButtonListner(MainActivity.this);    
            listView.setAdapter(adapter);    
        
        }    
        
        @Override    
        public void onButtonClickListner(int position, String value) {    
            Toast.makeText(MainActivity.this, "Button click " + value,    
                    Toast.LENGTH_SHORT).show();   
    
    // call and redirect to another screen with "StartActivity" 
        
        }    
        
    }   

//使用RecyclerView

class MyAdapter(var activity: Activity, var data:ArrayList):RecyclerView.Adapter<Adapter.MyViewHolder>() {

class MyViewHolder(itemView: View): RecyclerView.ViewHolder(itemView) {

    var tvName = itemView.textViewName
    var tvage = itemView.textViewAge
    var tvId = itemView.textViewId



}


override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
    val root = LayoutInflater.from(activity).inflate(R.layout.student_item, parent, false)
    return MyViewHolder(root)
}

override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
    holder.tvId.text = data[position].id.toString()
    holder.tvName.text = data[position].name.toString()
    holder.tvage.text = data[position].age.toString()
     holder.tvName.setOnClickListener {
         Toast.makeText(activity,"Test",Toast.LENGTH_SHORT).show()
         //   var intent = Intent(activity, MainActivity::class.java)
        //    startActivity(intent)
     }
}

override fun getItemCount(): Int {
    return data.size

}

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM