gpt4 book ai didi

android - 获取从 CustomListView 检查的项目的名称并在下一个 Intent 中传递该项目

转载 作者:行者123 更新时间:2023-11-30 02:19:59 27 4
gpt4 key购买 nike


我创建了一个应用程序
在我的应用程序中,我创建了自定义 ListView,在 ListView 中,我添加了一个 CheckBoxImageView 和 2 TextView
现在我想在下一个选中的 Activity 中传递数据。
我该怎么做?
ChannelListView.java

public class ChannelListView extends Activity implements OnItemClickListener {
CheckBox checkMarks;
ListView allChannels;
ArrayAdapter<DisplayChannelListData> adapter;
Button send, back;
DatabaseHelper dbHelper;
List<DisplayChannelListData> channelListData;
ChannelListView channelListView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_view);
channelListView = this;
dbHelper = new DatabaseHelper(getApplicationContext());
allChannels = (ListView) findViewById(R.id.listviewAllChannel);
send = (Button) findViewById(R.id.btnListSend);
back = (Button) findViewById(R.id.btnListBack);

adapter = new ListViewAdapter(this, getListViewModel());
allChannels.setAdapter(adapter);
allChannels.setOnItemClickListener(this);

send.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
Intent intent = new Intent(ChannelListView.this, ChannelList.class);
startActivity(intent);

}
});
}

private List<DisplayChannelListData> getListViewModel() {
channelListData = dbHelper.displayChannelsList(channelListView);

return channelListData;
}

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

checkMarks = (CheckBox) view.findViewById(R.id.chkAllCheckMark);
if (!checkMarks.isChecked()) {
checkMarks.setChecked(true);

} else {
checkMarks.setChecked(false);
}

}

}

ListViewAdapter.java

public class ListViewAdapter extends ArrayAdapter<DisplayChannelListData> {
private final List<DisplayChannelListData> list;
private final Activity context;
boolean checkAll_flag = false;
boolean checkItem_flag = false;

public ListViewAdapter(Activity context, List<DisplayChannelListData> list) {
super(context, R.layout.list_view, list);
this.context = context;
this.list = list;

}

static class ViewHolder {
protected TextView channelTitle, channelSubTitle;
protected ImageView channelImage;
protected CheckBox greenCheckMark;

}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
if (convertView == null) {

LayoutInflater inflater = context.getLayoutInflater();
convertView = inflater.inflate(R.layout.all_channel_listview_item, null);
viewHolder = new ViewHolder();
viewHolder.channelTitle = (TextView) convertView.findViewById(R.id.txtAllChannelName);
viewHolder.channelSubTitle = (TextView) convertView
.findViewById(R.id.txtAllChannelDesc);
viewHolder.channelImage = (ImageView) convertView.findViewById(R.id.imgAllChannelIcon);
viewHolder.greenCheckMark = (CheckBox) convertView.findViewById(R.id.chkAllCheckMark);
viewHolder.greenCheckMark
.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
int getPosition = (Integer) buttonView.getTag();
list.get(getPosition).setSelected(buttonView.isChecked());

}
});

convertView.setTag(viewHolder);
convertView.setTag(R.id.chkAllCheckMark, viewHolder.greenCheckMark);
convertView.setTag(R.id.imgAllChannelIcon, viewHolder.channelImage);
convertView.setTag(R.id.txtAllChannelName, viewHolder.channelTitle);
convertView.setTag(R.id.txtAllChannelDesc, viewHolder.channelSubTitle);

} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.greenCheckMark.setTag(position);
viewHolder.greenCheckMark.setChecked(list.get(position).isSelected());
viewHolder.channelImage.setImageResource(list.get(position).getDrawable_path());
viewHolder.channelTitle.setText(list.get(position).getChannel_name());
viewHolder.channelSubTitle.setText(list.get(position).getChannel_desc());

return convertView;
}

}

DisplayChannelListData.java

public class DisplayChannelListData {
private boolean selected;
private int drawable_path;
private String channel_name;
private String channel_desc;

public DisplayChannelListData(int path,String name,String desc){
this.drawable_path = path;
this.channel_name = name;
this.channel_desc = desc;
}

public int getDrawable_path() {
return drawable_path;
}

public void setDrawable_path(int drawable_path) {
this.drawable_path = drawable_path;
}

public String getChannel_name() {
return channel_name;
}

public void setChannel_name(String channel_name) {
this.channel_name = channel_name;
}

public String getChannel_desc() {
return channel_desc;
}

public void setChannel_desc(String channel_desc) {
this.channel_desc = channel_desc;
}

public boolean isSelected() {
return selected;
}

public void setSelected(boolean selected) {
this.selected = selected;
}




}

最佳答案

检查的时候维护一个ArrayList,比如:

ArrayList<DisplayChannelListData> checkedChannelList=new ArrayList<DisplayChannelListData>();

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

checkMarks = (CheckBox) view.findViewById(R.id.chkAllCheckMark);
if (!checkMarks.isChecked()) {
checkMarks.setChecked(true);
checkedChannelList.add(channelListData.get(position));

} else {
checkMarks.setChecked(false);
checkedChannelList.remove(channelListData.get(position));
}

}

然后,在 Button 的 onClickListener 中,发送已检查的 channel 列表:

send.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
Intent intent = new Intent(ChannelListView.this, ChannelList.class);
intent.putParcelableArrayListExtra("CHANNELSLIST", checkedChannelList);
startActivity(intent);

}
});

关于android - 获取从 CustomListView 检查的项目的名称并在下一个 Intent 中传递该项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28717467/

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