【问题标题】:RecyclerView or ListView vertical with row layout with wrap_contentRecyclerView 和 ListView 垂直与行布局宽度 wrap_content
【发布时间】:2017-06-18 16:59:44
【问题描述】:

我想在垂直的RecycleViewListView 中显示TextViews 的列表,这很简单,但TextView 使用整个宽度,我希望TextView 在使用整个宽度之前结束, ListView 的下一项从剩余宽度开始。示例:

item1 textview blablalbablalba
布拉布拉布拉。 item2 textviewvav
blablablabllabllabllalb. item3
fsafsfsfsfsfsffsfs。

我该怎么做???

我应该做一个自定义的 TextView 还是一个自定义的 RecyclerView/ListView 还是什么??

我有 de row.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:orientation="vertical">

     <TextView
         android:id="@+id/row_scripture_textView"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:textSize="10sp" />

 </LinearLayout>

还有 RecyclerView

<android.support.v7.widget.RecyclerView
    android:id="@+id/rv_scripture"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

java

RecyclerView rvScripture = (RecyclerView) rootView.findViewById(R.id.rv_scripture);
rvScripture.setAdapter(new ScriptureAdapter(getActivity(), myArrayObjs));
rvScripture.setLayoutManager(new LinearLayoutManager(getActivity()));

这是我的适配器。

public class ScriptureAdapter extends 
RecyclerView.Adapter<ScriptureAdapter.MyViewHolder> {

    private LayoutInflater inflater;
    private List<String> data = Collections.emptyList();

    public ScriptureAdapter(Context context, List<String> data) {
        inflater = LayoutInflater.from(context);
        this.data = data;
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = inflater.inflate(R.layout.row_scripture, parent, false);
        MyViewHolder viewHolder = new MyViewHolder(view);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
        String current = data.get(position);
        holder.textView.setText(current);
    }

    @Override
    public int getItemCount() {
        return data.size();
    }

    class MyViewHolder extends RecyclerView.ViewHolder {

        TextView textView;

        public MyViewHolder(View itemView) {
            super(itemView);
            textView = (TextView) itemView.findViewById(R.id.row_scripture_textView);
        }
    } 
}

【问题讨论】:

  • 您打算将此列表用于什么目的?它有更多的功能还是只是为了展示?
  • @MohamedYassin 只是为了展示,我希望选择在另一个项目下方查看一个项目(正常行为),正如我在提示中解释的那样

标签: java android xml listview android-recyclerview


【解决方案1】:

我认为这可以通过在一个巨大的 TextView 中使用 Spannable 类来实现。

SpannableStringBuilder builder = new SpannableStringBuilder();

并将所有加载的数据放入一个字符串列表中,然后在迭代它们时,

您将先前的数据附加到下一个数据,直到到达数据的末尾。

告诉我进展如何!

【讨论】:

  • 老兄,我不知道怎么感谢你!我爱你!我不知道 Spannable 和那些东西,我正在研究 Spans 并解决了未来的问题。其实你没有解决我的问题,但你指导了我:)
【解决方案2】:

如果数据只是为了显示,那么我建议最简单的解决方案是将数据组合到一个变量中并将其输出到滚动视图中的 TextView 中。

【讨论】:

  • 我是这么想的,但这就是为什么我使用 RecyclerView/ListView..我需要点击这些项目...我的意思是,每个项目都是可点击的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-17
  • 1970-01-01
  • 2012-11-08
  • 1970-01-01
  • 2017-04-03
相关资源
最近更新 更多