【问题标题】:How to pass current data from Adapter to Adapter?如何将当前数据从适配器传递到适配器?
【发布时间】:2018-03-13 17:28:55
【问题描述】:

异构RecyclerView

你好朋友我有一个简单的疑问

我在这里添加 singleLineText

`addSingleLine.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String singleLineText = singleline.getText().toString();
            if(singleLineText.length() != 0)
            {
                mAdapter.addItem(singleLineText,null);
                mAdapter.notifyDataSetChanged();
                Log.e(TAG,"adding single line text");
            }
            singleline.getText().clear();
        }
    });`

在这部分我添加了 MultiLineText

` addMultiLine.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String multiLineText = multiline.getText().toString();
            String myList[] = multiLineText.split(",");
            for(String item : myList)
            {
                mAdapter.addItem(null,item);
                mAdapter.notifyDataSetChanged();
                Log.e(TAG,"adding multi line text");
            }
            multiline.getText().clear();
        }
    });
}`

我的适配器部分代码:

` public void addItem(String singleLineText, String item) {
    Model model = new Model();
    if(item == null) {
        model.setText1(singleLineText);
        model.settingSingleLineText(true); // How to identify single line
    }
    else
    {
        model.setText2(item);
        model.settingMultiLineText(true); // How to identify multiple line
    }
    modelList.add(model);
}`

GetViewType 方法:

` public int getItemViewType(int position) {
   if (modelList.get(position).IfSingleLine() != null)
        return VERTICAL;
    else {
        return HORIZONTAL;
    }
}`

型号类代码sn-p:

private Boolean checkSingleLine = null;

public Boolean IfSingleLine()
{
    return checkSingleLine;
}
public void settingSingleLineText(Boolean txt1)
{
    checkSingleLine = txt1;
}
public void settingMultiLineText(Boolean txt2)
{
    checkMultiLine = txt2;
}   

` 问题:如何通过Model Class识别singleLineText和multiLineText??

【问题讨论】:

  • 我不太明白你的问题。您想将“singleLineText”传递给您的适配器吗?
  • 是的,这样我就可以在视图中正确显示我的文本@Sam
  • 你的verticallist 已经有了。你还需要什么?
  • 当我添加新的Text 项目时,它们会与旧的文本项目一起添加并显示在TextView。请参考此链接 [i.stack.imgur.com/2dou1.png]
  • 你能添加你想要的样本输入和样本输出吗?还包括相关代码,这样更容易理解你到底想要什么。

标签: java android android-studio android-recyclerview


【解决方案1】:

您的if (modelList.get(position).IfSingleLine() != null) 有问题。 IfSingleLine() 永远不会是 null。您想检查它是true 还是false,这不是您检查的方式。

将您的getItemViewType 更改为以下内容,您将从此函数获得正确的方向结果。

public int getItemViewType(int position) {
   if (modelList.get(position).IfSingleLine())
        return VERTICAL;
    else {
        return HORIZONTAL;
    }
}`

【讨论】:

  • 非常感谢你的回复。这个网站有什么方法可以关注你@Sam
  • 我认为 stackoverflow 不允许关注者。但如果我的回答对您的问题有所帮助,请单击勾选按钮接受我的回答。
  • k 如果我的问题有点用,你可以投票给我的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-11
  • 1970-01-01
  • 2019-08-30
  • 1970-01-01
  • 2014-08-06
  • 2018-08-14
相关资源
最近更新 更多