
[英]How do I make a specific item in the navigation drawer to appear as selected?
[英]In android, how do I make make an item on one fragment, and then make i appear on another?
我有两个片段,希望能够一起交流。 我希望能够在FragmentPlannerAddItem中创建一个事件或任务(在我实际上称为这些“活动”或“ activityItem”的代码中),就像在Google Calenadar中一样。 在FragmentPlannerAddItem片段中输入有关事件的信息(时间,日期,名称等),然后将其发送到FragmentPlanner片段,在该片段中,用户可以从中获得计划中的事件的概览(我在其中有一个ListView FragmentPlanner)。
问题是,当我在FragmentPlannerAddItem中创建一个项目时,该项目然后不会显示在FragmentPlanner上。 这很奇怪,因为我完全能够在Fragment Planner的列表中创建两个项目(它们是测试项目),但是当我稍后从FragmentPlannerAddItem添加一个项目时,新项目不可见。
通过让FragmentPlanner和FragmentPlannerAddItem都使用方法定义它们自己的接口,我在片段之间进行了通信。 这些接口然后由HostMainActivity实现,这两个片段绑定到该接口。 因此,当FragmentPlannerAddItem将信息发送到FragmentPlanner时,它首先将信息发送给HostMainActivity,然后HostMainActivity将其发送给FragmentPlanner。
我对此进行了调试,发现包含我的行项目的列表确实包含了这个新项目。 但是,它不会与启动时创建的那些测试项目一起显示。 我的教授曾暗示我的自定义适配器可能与它有关(因为我的其余代码看起来都不错,他说)。 他没有时间检查整个适配器。 我的自定义适配器中发生了一些事情,似乎有些混乱。 我尝试使用不同的适配器,但是我很难理解如何正确设置它。 我不知道,什么代码对于适配器的工作必不可少,什么代码不是必需的,并且可能会做奇怪的事情。
总而言之,我希望用户能够在FragmentPlannerAddItem片段上创建事件/任务,然后使事件在列表中显示,并带有适当的时间和未选中的框。 现在,我只想让一些row_items在FragmentPlannerAddItem上创建时出现在FragmentPlanner上。 假设问题出在我的自定义适配器中的某个地方,那么谁能帮助您确定此适配器中可能出了什么问题?
提前致谢。 请问我是否对所描述的内容不太清楚。
亲切的问候安德烈亚斯
在CustomAdapter中
public class CustomAdapter extends ArrayAdapter<ActivityItem> implements View.OnClickListener{
private ArrayList<ActivityItem> dataSet;
Context mContext;
// View lookup cache
private static class ViewHolder {
TextView actName;
TextView actTime;
CheckBox actCheckbox;
}
public CustomAdapter(ArrayList<ActivityItem> data, Context context) {
super(context, R.layout.row_item, data);
this.dataSet = data;
this.mContext=context;
}
public void addItem(String name, String time, String date){
dataSet.add(new ActivityItem(name, new Date(0)));
notifyDataSetChanged();
}
private int lastPosition = -1;
@Override
public int getCount() {
return dataSet.size();
}
@Override
public ActivityItem getItem(int i) {
return dataSet.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
// @SuppressLint("WrongViewCast")
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// Get the data item for this position
ActivityItem activityItem = getItem(position);
// Check if an existing view is being reused, otherwise inflate the view
ViewHolder viewHolder; // view lookup cache stored in tag
final View result;
if (convertView == null) {
viewHolder = new ViewHolder();
LayoutInflater inflater = LayoutInflater.from(mContext);
convertView = inflater.inflate(R.layout.row_item, parent, false);
viewHolder.actName = (TextView) convertView.findViewById(R.id.description);
viewHolder.actTime = (TextView) convertView.findViewById(R.id.timeField);
viewHolder.actCheckbox = (CheckBox) convertView.findViewById(R.id.checkBox);
result=convertView;
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
result=convertView;
}
/*Animation animation = AnimationUtils.loadAnimation(mContext, (position > lastPosition) ? R.anim.up_from_bottom : R.anim.down_from_top);
result.startAnimation(animation);
lastPosition = position;*/
viewHolder.actName.setText(activityItem.getName());
viewHolder.actTime.setText(activityItem.getTime().toString());
viewHolder.actCheckbox.setChecked(activityItem.getChecked());
/* viewHolder.txtType.setText(activityItem.getType());
viewHolder.txtVersion.setText(activityItem.getVersion_number());
viewHolder.info.setOnClickListener(this);
viewHolder.info.setTag(position);*/
// Return the completed view to render on screen
return convertView;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.