XiMaLaYa 新奇部分的添加


---------------------------------------之前的一些知识点:----------------------------------------------------
修改空间的布局:
首先每个推荐之间是有间隙的,
注意,包含的结构是这样的:activity_main.xml->fragment_home.xml->recommend_item.xml->album_item.xml
所以每个推荐之间的间隙,只要在recommend_item 里面修改添加marginTop的数值就可以了,还有给每个推荐修改背景色为白色
还有为了修改间隙之间的颜色修改fragment_home的背景色为灰色的。就可以了


还有 显示 的 title,一般都是如果超出了范围了 就是使用限制了 。
设置当TextView中的文字超过TextView的容量时,用省略号代替
只需要下边的设置:
 
textview.setSingleLine(); 
textview.setEllipsiz(TextUtils.TruncateAt.valueOf("END"));
 
在xml中设置如下:
 
android:singleLine="true"
android:ellipsize="end"


android:singleLine="true"
android:ellipsize="end"
---------------------------------------之前的一些知识点:----------------------------------------------------




+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
发现新奇:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
由于RecyclerViewAdapter已经实现是了多布局的复用,那么现在要做的
1:首先做一个布局discovery_item.xml,这个里面 要绑定一个 discovery的一个变量。
2: 然后做一个discovery_columns.xml的布局文件,将上面的 discovery_item绑定到这个来。
3:将该布局添加到到HomeFfragment里面。




在写discovery_item.xml 的时候
注意 SimpleDraweeView 里面的设置:
app:placeholderImage="@mipmap/ic_launcher"
        app:imageURI="@{ Uri.parse( discovery.coverPath ) }"//靠!!!imageURI的i是小写的。
这里的面的最顶层的LinearLayout 可以不写


include的时候需要,导入这个layout里面的变量呢?
bind:user="@{user}"




注意 图片 这里 app:imageURI="@{ Uri.parse( discovery.coverPath  ?? ``) }"


++++++++++++++++++++++++++++
靠!!!imageURI的i是小写的。
++++++++++++++++++++++++++++


在discovery_item.xml的顶层Layout 里面添加:
android:layout_marginTop="2dp"
    android:background="@android:color/white"



现在的discovery_item.xml
-------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"  xmlns:app="http://schemas.android.com/apk/res-auto">
    <data>
        <import type="android.net.Uri"/>
        <variable name="discovery" type="com.kodulf.ximalayating.entities.DiscoveryEntity"/>
    </data>
<LinearLayout  android:layout_marginTop="2dp"  android:background="@android:color/white"  android:orientation="horizontal" >
    <com.facebook.drawee.view.SimpleDraweeView  android:layout_width="40dp"  android:layout_height="40dp"  app:placeholderImage="@mipmap/ic_launcher"  app:viewAspectRatio="1"  app:imageURI="@{ Uri.parse( discovery.coverPath ?? ``) }"  >
    </com.facebook.drawee.view.SimpleDraweeView>
<LinearLayout  android:layout_width="0dp"  android:layout_height="wrap_content"  android:layout_weight="1"  android:orientation="vertical">
    <TextView  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:text="@{ discovery.title }">
    </TextView>
    <TextView  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:text="@{ discovery.subtitle }">
    </TextView>
</LinearLayout>
</LinearLayout>
</layout>

-------------------------------------------------------------




discovery_columns.xml
--------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"  xmlns:app="http://schemas.android.com/apk/res-auto"  xmlns:bind="http://schemas.android.com/tools">
    <data>
        <variable  name="discoveryColumns"  type="com.kodulf.ximalayating.entities.DiscoveryColumns"/>

    </data>
    <LinearLayout android:orientation="vertical" android:layout_width="match_parent"  android:layout_height="wrap_content">
        <LinearLayout  android:layout_width="match_parent"  android:layout_height="wrap_content">
            <TextView  android:layout_width="0dp"  android:layout_height="wrap_content"  android:layout_weight="1"  text="@{ discoveryColumns.title }"/>
        </LinearLayout>
<LinearLayout  android:orientation="vertical" android:layout_width="match_parent"  android:layout_height="wrap_content">
    <include  layout="@layout/discovery_item"  android:layout_height="wrap_content"  android:layout_width="match_parent"  bind:discovery="@{ discoveryColumns.list[0] }"  />
    <include  layout="@layout/discovery_item"  android:layout_height="wrap_content"  android:layout_width="match_parent"  bind:discovery="@{ discoveryColumns.list[1] }"  />
    <include  layout="@layout/discovery_item"  android:layout_height="wrap_content"  android:layout_width="match_parent"  bind:discovery="@{ discoveryColumns.list[2] }"  />
    <include  layout="@layout/discovery_item"  android:layout_height="wrap_content"  android:layout_width="match_parent"  bind:discovery="@{ discoveryColumns.list[3] }"  />

</LinearLayout>
    </LinearLayout>
</layout>

--------------------------------------------------------------
HomeFragment里面添加两句话:
map.put(DiscoveryColumns.class,new BindingAdapter.BindingTool(R.layout.discovery_columns,BR.discoveryColumns));
        
adapter.add(body.getDiscoveryColumns());

package com.kodulf.ximalayating.fragments;


import android.databinding.DataBindingUtil;
import android.databinding.ViewDataBinding;
import android.databinding.tool.reflection.Callable;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;

import com.kodulf.ximalayating.BR;
import com.kodulf.ximalayating.R;
import com.kodulf.ximalayating.adapters.BindingAdapter;
import com.kodulf.ximalayating.databinding.FragmentHomeBinding;
import com.kodulf.ximalayating.entities.DiscoveryColumns;
import com.kodulf.ximalayating.entities.DiscoveryEntity;
import com.kodulf.ximalayating.entities.HomeEntity;
import com.kodulf.ximalayating.entities.RecommendEntity;
import com.kodulf.ximalayating.utils.NetworkUtil;

import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.HashMap;

import retrofit2.Callback;
import retrofit2.Response;

/**  * A simple {@link Fragment} subclass.  */ public class HomeFragment extends Fragment implements Callback<HomeEntity> {


    private BindingAdapter adapter;

    public HomeFragment() {
        // Required empty public constructor  }


    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        HashMap<Type,BindingAdapter.BindingTool> map = new HashMap<>();
        map.put(RecommendEntity.class,new BindingAdapter.BindingTool(R.layout.recommend_item, BR.recommend));
        map.put(DiscoveryColumns.class,new BindingAdapter.BindingTool(R.layout.discovery_columns,BR.discoveryColumns));
        adapter = new BindingAdapter(map, new ArrayList<>(), getContext());

        NetworkUtil.getService().getHome().enqueue(this);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment // return inflater.inflate(R.layout.fragment_home, container, false);  //初始化的时候需要修改了,不要上面的inflater了。  FragmentHomeBinding binding = DataBindingUtil.inflate(inflater, R.layout.fragment_home, container, false);
        binding.homeRecycler.setAdapter(adapter);
        return binding.getRoot();
    }

    @Override
    public void onResponse(Response<HomeEntity> response) {
// Toast.makeText(getContext(),"返回",Toast.LENGTH_LONG).show();  HomeEntity body = response.body();
        adapter.add(body.getEditorRecommendAlbums());
        adapter.addAll(body.getHotRecommends().getList());
        adapter.add(body.getDiscoveryColumns());
    }

    @Override
    public void onFailure(Throwable t) {
        t.printStackTrace();
    }
}



你可能感兴趣的:( XiMaLaYa 新奇部分的添加)