RecyclerView에 데이터를 설정하려고합니다.데이터가 표시되지 않는 RecyclerView
여기는 응답 데이터입니다.
[
{
"shopName": "Hello World.",
"shopTeluguName": "మమ్మీ",
"shopAddress": "Bomanahalli"
},
{
"shopName": "Hello World.",
"shopTeluguName": "మమ్మీ",
"shopAddress": "Bomanahalli"
},
{
"shopName": "Hello World.",
"shopTeluguName": "మమ్మీ",
"shopAddress": "Bomanahalli"
},
{
"shopName": "Hello.",
"shopTeluguName": "మమ్మీ",
"shopAddress": "Bomanahalli"
}
]
그것의 해석 및 ArrayList에 그것을 얻기 모두가 잘 작동되지만 재활용보기에 데이터가 표시되지 않습니다. 빈 화면. 여기
이 어댑터 활동 다음
public class MainActivity extends AppCompatActivity implements WebServiceInterface {
Toolbar toolbar;
RecyclerView recyclerViewShops;
private int FETCH_SHOPS_REQUEST_CODE = 1;
ArrayList<Shop> arrayListShops;
ShopsAdapter adapterShops;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
fetchShops();
}
private void init() {
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle("Shops List");
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
getSupportActionBar().setDisplayShowHomeEnabled(false);
toolbar.setTitleTextColor(Color.WHITE);
recyclerViewShops = (RecyclerView) findViewById(R.id.recyclerView);
RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(this);
recyclerViewShops.setLayoutManager(mLayoutManager);
recyclerViewShops.setItemAnimator(new DefaultItemAnimator());
recyclerViewShops.setHasFixedSize(true);
arrayListShops = new ArrayList<>();
}
private void fetchShops() {
HashMap<String, String> paramsList = new HashMap<>();
WebServiceController webServiceController = new WebServiceController(
this, this);
String hitURL = LinksAndKeys.SHOPS_URL;
webServiceController.sendGETRequest("", "Loading..", hitURL, paramsList, FETCH_SHOPS_REQUEST_CODE);
}
@Override
public void getResponse(int responseCode, String responseString, String requestType, int requestCode) {
if (requestCode == FETCH_SHOPS_REQUEST_CODE && responseCode == 200) {
Gson gson = new Gson();
Shop[] shops = gson.fromJson(responseString, Shop[].class);
arrayListShops = new ArrayList<Shop>(Arrays.asList(shops));
adapterShops = new ShopsAdapter(this, arrayListShops);
recyclerViewShops.setAdapter(adapterShops);
}
}
}
입니다 :
public class ShopsAdapter extends RecyclerView.Adapter<ShopsAdapter.MyViewHolder> {
Activity activity;
private List<Shop> shopList;
public class MyViewHolder extends RecyclerView.ViewHolder {
LinearLayout linearLayoutParent;
public TextView textViewShopName, textViewShopTeluguName, textViewShopAddress;
public MyViewHolder(View view) {
super(view);
linearLayoutParent = (LinearLayout) view.findViewById(R.id.linearLayoutParent);
textViewShopName = (TextView) view.findViewById(R.id.textViewShopName);
textViewShopTeluguName = (TextView) view.findViewById(R.id.textViewShopTeluguName);
textViewShopAddress = (TextView) view.findViewById(R.id.textViewShopAddress);
}
}
public ShopsAdapter(Activity activity, List<Shop> shopList) {
this.activity = activity;
this.shopList = shopList;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.row_shop, parent, false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
final Shop shop = shopList.get(position);
holder.textViewShopName.setText(shop.getShopName());
holder.textViewShopTeluguName.setText(shop.getShopTeluguName());
holder.textViewShopAddress.setText(shop.getShopAddress());
holder.linearLayoutParent.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(activity, shop.getShopName(), Toast.LENGTH_SHORT).show();
}
});
}
@Override
public int getItemCount() {
return shopList.size();
}
}
레이아웃 : ArrayList에 데이터를 가지고
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.saravanaeggdistributors.activities.MainActivity">
<include
android:id="@+id/toolbar"
layout="@layout/toolbar" />
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="vertical" />
</LinearLayout>
반응이 좋아하지만, recyclerview doesnt 쇼 . 어떤 아이디어가 잘못 되었습니까?
나는 체크했다. 데이터가 있습니다. 어댑터 내부에서도 데이터가 적절합니다. 디버거가 어댑터의 OnBindViewHolder에서 settext 메서드로 두 번째로 이동하면 사라집니다. – Akshat
프로젝트를 디버깅 및 테스트 할 수 있도록 공유 할 수 있습니까? –
여기 있습니다. 나는 당신 편이 제대로 돌아 가지 않기를 바란다. https://www.dropbox.com/s/cyr67cvmlwkj31q/Saravana.zip?dl=0 – Akshat