只需扩展recyclerview即可显示TextView

时间:2017-06-03 16:32:41

标签: java android

我已经探索了很多方法来实现这一目标。但我现在很困惑。我尝试了很多Githubs库,但感到困惑。也试过这个,但我不认为它允许在扩展视图中显示文本视图:http://bignerdranch.github.io/expandable-recycler-view/

我想要什么:一个简单的Recyclerview从服务器获取不同项目的一些文本。在每个项目单击时,应该展开布局或视图,并且TextView应该与服务器中的相应提取文本一起显示。

我有一个简单的RecyclerView,代码如下:

DataAdapter.java

public class DataAdapter extends RecyclerView.Adapter<DataAdapter.ViewHolder> {
    private ArrayList<List> android_versions;
    private Context context;
    int i =0;

public DataAdapter(Context context,ArrayList<List> android_versions) {
    this.context = context;
    this.android_versions = android_versions;
}

@Override
public DataAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
    View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.row_layout, viewGroup, false);
    return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, int i) {
    viewHolder.tv_android.setText(android_versions.get(i).getAndroid_version_name());
}
@Override
public int getItemCount() {
    return android_versions.size();
}

public class ViewHolder extends RecyclerView.ViewHolder{
    TextView tv_android;
    public ViewHolder(View view) {
        super(view);
        tv_android = (TextView)view.findViewById(R.id.tv_android);
    }
}

List.java(截至目前尚未使用某些功能)

public class List {

    private String android_version_name;
    private String descr;
    private int android_image_url;
    private String android_image_url1;
    public String getAndroid_version_name() {
        return android_version_name;
    }

    public String getDescr(){ return descr;}

    public void setDescr(String descr) {
        this.descr = descr;
    }
    public void setAndroid_version_name(String android_version_name) {
        this.android_version_name = android_version_name;
    }

    public int getAndroid_image_url() {
        return android_image_url;
    }
    public String getAndroid_image_url1() {
        return android_image_url1;
    }

    public void setAndroid_image_url(int android_image_url) {
        this.android_image_url = android_image_url;
    }
    public void setAndroid_image_url1(String android_image_url1) {
        this.android_image_url1 = android_image_url1;
    }
}

row_layout.xml

<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_marginTop="5dp"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    card_view:cardCornerRadius="5dp"
    android:background="@drawable/custom_bg"
    android:clickable="true"
    android:translationZ="3dp"
    android:elevation="1dp"
    android:focusable="true">

    <RelativeLayout
        android:layout_marginLeft="0dp"
        android:paddingTop="10dp"
        android:paddingBottom="10dp"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/custom_bg">

        <TextView
            android:layout_marginTop="10dp"
            android:textSize="20sp"
            android:layout_marginRight="5dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/tv_android"
            android:textStyle="normal"
            android:layout_centerVertical="true" />
    </RelativeLayout>
</android.support.v7.widget.CardView>

Work.java(它是一个片段)

String[] sublist={
            "English",
            "Hindi"
    };

  public void onViewCreated(View view, Bundle savedInstanceState){
        super.onViewCreated(view, savedInstanceState);
        rcl = (RecyclerView) getActivity().findViewById(R.id.homeworklist);
        RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getActivity());
        rcl.setLayoutManager(layoutManager);
        dataAdapter = new DataAdapter(getActivity(), new ArrayList<>(prepareData()));
        rcl.setAdapter(dataAdapter);
    }

    public ArrayList prepareData(){
        ArrayList android_version = new ArrayList<>();
        for(int i=0;i<sublist.length;i++){
            List androidVersion = new List();
            androidVersion.setAndroid_version_name(sublist[i]);
            android_version.add(androidVersion);
            break;
        }
        return android_version;
    }

0 个答案:

没有答案