使用wrap_content

时间:2017-06-18 16:59:44

标签: java android xml listview android-recyclerview

我希望在垂直TextViewRecycleView中显示ListView的列表并且很容易,但TextView使用整个宽度,我想要当TextView在使用整个宽度之前结束时,ListView的下一个项目以剩余宽度开始。例如:

item1 textview blablalbablalba
blalblabla。 item2 textviewvav
blablablalblabllabllalb。第3项 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);
        }
    } 
}

2 个答案:

答案 0 :(得分:0)

如果数据仅用于展示,那么我建议最简单的解决方案是将数据合并到变量中并将其输出到滚动视图中的TextView。

答案 1 :(得分:0)

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

SpannableStringBuilder builder = new SpannableStringBuilder();

并将所有加载的数据放入字符串列表中,然后重复它们,

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

让我知道它是怎么回事!