gpt4 book ai didi

android - 如何在适配器 ListView 中添加 onclick 按钮

转载 作者:行者123 更新时间:2023-11-29 21:58:19 25 4
gpt4 key购买 nike

我的项目包含 listView(homelistView),其中包含 button(btnList)。

当我点击按钮(btnList)时,它必须转到另一个 Activity 。我尝试了很多,但没有找到一个好的例子。

请给我一个关于此的好例子。单击我的按钮(btnList)无法正常工作,请提出我的错误和解决方案。请提前感谢您。

已编辑:

经过 2 天的努力,我终于清楚地获得了 70% 的输出 请看这个链接 button in listview adapter

看起来像这样

enter image description here

  --------------------------------A--
text text button(btnList) B
--------------------------------C---
text text BUTTON(btnList) D
--------------------------------E--

EfficientAdapter.java

public class EfficientAdapter extends BaseAdapter implements SectionIndexer {

private String mSections = "#ABCDEFGHIJKLMNOPQRSTUVWXYZ";
ArrayList<Patient> patientListArray;

private LayoutInflater mInflater;
private Context context;
protected ListView mListView;
private int positions;
ViewHolder holder;


public EfficientAdapter(Context context) {
mInflater = LayoutInflater.from(context);
this.context = context;

String patientListJson = CountriesList.jsonData;
JSONObject jssson;
try {
jssson = new JSONObject(patientListJson);
patientListJson = jssson.getString("PostPatientDetailResult");
} catch (JSONException e) {
e.printStackTrace();
}
Gson gson = new Gson();
JsonParser parser = new JsonParser();
JsonArray Jarray = parser.parse(patientListJson).getAsJsonArray();
patientListArray = new ArrayList<Patient>();
for (JsonElement obj : Jarray) {
Patient patientList = gson.fromJson(obj, Patient.class);
patientListArray.add(patientList);
Log.i("patientList", patientListJson);

}
}

/**
* sorting the patientListArray data
*/
public void sortMyData() {
// sorting the patientListArray data
Collections.sort(patientListArray, new Comparator<Object>() {
@Override
public int compare(Object o1, Object o2) {
Patient p1 = (Patient) o1;
Patient p2 = (Patient) o2;
return p1.getName().compareToIgnoreCase(p2.getName());
}

});
}

public int getCount() {

return patientListArray.size();
}

public Object getItem(int position) {

return position;
}

public long getItemId(int position) {
return position;
}

public View getView(int position, View convertView, ViewGroup parent) {

this.positions = position;

if (convertView == null) {
convertView = mInflater.inflate(R.layout.homemplebrowview, parent,false);
holder = new ViewHolder();
holder.text1 = (TextView) convertView.findViewById(R.id.name);
holder.text2 = (TextView) convertView.findViewById(R.id.mrn);
holder.text3 = (TextView) convertView.findViewById(R.id.date);
holder.text4 = (TextView) convertView.findViewById(R.id.age);
holder.text5 = (TextView) convertView.findViewById(R.id.gender);
holder.text6 = (TextView) convertView.findViewById(R.id.wardno);
holder.text7 = (TextView) convertView.findViewById(R.id.roomno);
holder.text8 = (TextView) convertView.findViewById(R.id.bedno);


holder.btnList = (Button) convertView.findViewById(R.id.listbutton);

convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}

holder.text1.setText(Util.formatN2H(patientListArray.get(position)
.getName()));
holder.text2.setText(patientListArray.get(position).getMrnNumber());
holder.text3.setText(Util.formatN2H(patientListArray.get(position)
.getRoom()));
holder.text4.setText(Util.formatN2H(patientListArray.get(position)
.getAge()));
holder.text5.setText(Util.formatN2H(patientListArray.get(position)
.getGender()));
holder.text6.setText(Util.formatN2H(patientListArray.get(position)
.getWard()));
holder.text7.setText(Util.formatN2H(patientListArray.get(position)
.getRoom()));
holder.text8.setText(Util.formatN2H(patientListArray.get(position)
.getBed()));


// holder.btnList.setOnClickListener(new OnClickListener(test));

holder.btnList.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
Toast.makeText(context, "STAT", Toast.LENGTH_SHORT).show();
Intent next = new Intent(context, Home.class);
Log.i("next23", "next"+ next);
context.startActivity(next);
}
});

return convertView;
}



/*OnItemClickListener test = new OnItemClickListener() {
onItemClick(AdapterView<?> parent, View view, int position, long id){
((TextView)view.findViewById(R.id.yourTextViewId)).getText();

{
// Button btnList=(Button)v.findViewById(R.id.listbutton);

btnList.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
Toast.makeText(context, "STAT", Toast.LENGTH_SHORT).show();
Intent next = new Intent(context, Home.class);
Log.i("next23", "next"+ next);
context.startActivity(next);
}

});
}

};
*/


static class ViewHolder {
public Button btnList;
public TextView text8;
public TextView text7;
public TextView text6;
public TextView text5;
public TextView text4;
public TextView text1;
public TextView text2;
public TextView text3;
}

@Override
public void notifyDataSetChanged() {
super.notifyDataSetChanged();
}



/*public void onItemClick(AdapterView<?> arg0, View v, final int position,
long arg3)
{
holder.btnList=(Button)v.findViewById(R.id.listbutton);

holder.btnList.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
Toast.makeText(context, "STAT", Toast.LENGTH_SHORT).show();
Intent next = new Intent(context, Home.class);
Log.i("next23", "next"+ next);
context.startActivity(next);
}

});
}
*/



public int getPositionForSection(int section) {
// sorting the patientListArray data
sortMyData();
// If there is no item for current section, previous section will be
// selected
for (int i = section; i >= 0; i--) {
for (int j = 0; j < getCount(); j++) {
if (i == 0) {
// For numeric section
for (int k = 0; k <= 9; k++) {
if (StringMatcher.match(
String.valueOf(patientListArray.get(j)
.getName().charAt(0)),
String.valueOf(k)))
return j;
}
} else {
if (StringMatcher.match(
String.valueOf(patientListArray.get(j).getName()
.charAt(0)),
String.valueOf(mSections.charAt(i))))
return j;
}
}
}
return 0;
}

public int getSectionForPosition(int position) {
return 0;
}

public Object[] getSections() {
String[] sections = new String[mSections.length()];
for (int i = 0; i < mSections.length(); i++)
sections[i] = String.valueOf(mSections.charAt(i));
return sections;
}

}

最佳答案

这个例子可能对你有帮助。

class EfficientAdapter extends BaseAdapter {
Context con;

public EfficientAdapter(Context con) {
this.con = con;

}

@Override
public int getCount() {

return list.size();
}

@Override
public Object getItem(int position) {

return position;
}

@Override
public long getItemId(int position) {

return position;
}

@Override
public View getView(int position, View convertView,
ViewGroup parent) {

LayoutInflater inflater = (LayoutInflater) con
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.homemplebrowview, parent, false);

Button row = (Button) rowView.findViewById(R.id.listbutton);


final int n = position;
row.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
Intent next = new Intent(context, Home.class);
startActivity(next);

}
});

return rowView;
}
}

关于android - 如何在适配器 ListView 中添加 onclick 按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12637301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com