繁体   English   中英

在android中,如何使一个片段上的项目,然后使我出现在另一个上?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM