2016-06-11 6 views
0

RecyclerViewerActivity 안에 맞춤 어댑터가 있습니다. 거기 RecyclerViewer에서 제품 범주는 어댑터 같은 각 카테고리 이름을 원하는 분야한 액티비티에서 다른 액티비티로 값을 전달하고 어댑터에 표시하려면 어떻게해야합니까?

category 1 = "drinks", category 2 - "dairy", category 3 = "pasta". 

사용자가 "음료"를 클릭 - ActivityDrinks 새로운 그가 소다를 추가 할 수 있습니다이 범주 -에 대한 항목을 추가 할 목록보기로 호출, 콜라.

그는 "우유"를 클릭하면 -

가 지금은 목록에있는 기존 항목의 일부 지표를 구현하고 adapter.So 경우에 전달하려고 ... ActivityDairy가 열리고 그는 우유, 요구르트를 추가 할 수 있습니다 ActivityDrinks에 적어도 하나의 항목이 있습니다 - 내 어댑터의 카테고리 이름 위에 이미지를 표시하고 싶습니다 ( RecyclerViewer 작업). 따라서 사용자는 카테고리 또는 항목에 항목이 있는지 확인할 수 있습니다.

내가 모든 활동에서의 ArrayList를 확인하기 위해 부울 변수를 추가 (ActivityDrinks, ActivityDairy) :

if (arrayList == null) { 
    return false; 
} 
else { 
    return true; 
} 

이 부분의 작동하지만 지금은 내 어댑터 카테고리의 이름 위의 이미지를 표시 할 (어댑터 변수의 값에 따라 각 범주의 이름 + 표시기를 보유하는 ImageView) : variable = true - 표시 이미지.

이것은 (RecyclerView 단일 카드) 내 레이아웃 코드 :

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/ImageBack" 
     android:background="@drawable/back_standart"> 

     <!--name of Category (like "drinks")--> 
     <TextView 
     android:text="text" 
     android:id="@+id/item_title" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:textColor="@color/black" 
     android:textSize="22dp" 
     android:layout_marginLeft="8dp" 
     android:layout_marginTop="35dp" 
     android:layout_marginRight="8dp" /> 

     <!--desired indicator--> 
     <ImageView 
     android:background="@drawable/iclun" 
     android:id="@+id/badgeView" 
     android:layout_marginLeft="100dp" 
     android:textColor="#FFF" 
     android:textStyle="bold" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignEnd="@+id/item_title" /> 

</RelativeLayout> 

enter image description here

그리고 이것은 (중포 기지 사용) ActivityDrinks의 배열 목록을 확인 내 코드입니다 :

 public void onDataChange(DataSnapshot dataSnapshot) { 
      for (DataSnapshot snap: dataSnapshot.getChildren()){ 
       Log.e(snap.getKey(),snap.getChildrenCount()+""); 
      } 
      if(dataSnapshot.getChildrenCount()>0){ 
       index_badge = true; 

내 어댑터 :

 @Override 
     public void onBindViewHolder(ViewHolder viewHolder, final int position) { 

    viewHolder.txtViewTitle.setText(itemsData[position].getItem_title());     

    viewHolder.badge.setImageResource(itemsData[position].getBadge_index()); 

putExtras를 사용하고 내 변수의 값을 RecyclerViewActivity에 전달하려고했습니다. 그러나 RecyclerView의 각 항목에 변수 값을 전달하는 방법을 실제로 이해하지 못합니다. "Drinks"는 ActivityDairy에 항목이 없으므로 "Diary"에 해당 될 가능성이 있습니다. 이 경우 음료수 용 어댑터에서 이미지/표시기를 표시하고 일기를 표시해야합니다.

+2

예, 일부 코드 (! 모든) 및 스크린 샷 (들)을 추가하시기 바랍니다 코드와 원하는 레이아웃 – USKMobility

+0

의 스크린 샷을 추가 할 수 있습니다. 우리가 실제 문제가 무엇인지 모르기 때문에 당신의 질문은 어리 석고 대답하기 쉽지 않습니다. – Sufian

+0

편집 된 질문을 참조하십시오. – user5866501

답변

-1

SharedPreferences를 사용하여 문제를 해결했습니다.

final SharedPreferences pref = getSharedPreferences("filename",MODE_PRIVATE); 
    SharedPreferences.Editor editor = pref.edit(); 
    editor.putBoolean("key",index_badge); 
    editor.apply(); 
    Log.e("key","index"+index_badge); 

을 그리고 RecyclerViewerActivity의 값 검색 : 나는 ActivityDrinks에서 RecyclerViewerActivity에 가치를 보내

 SharedPreferences pref = getSharedPreferences("filename", MODE_PRIVATE); 
    Boolean a = pref.getBoolean("key", false); 

코드는 나를 위해 작동합니다.

+0

한 활동에서 다른 활동으로 데이터를 전달하려면 '의도'를 사용해야합니다. 그것을 달성하기 위해'SharedPreference' 나 SQLite를 사용하는 것은 틀린 일이지만, 현재 일하는 것을 유지할 수는 있습니다. – Sufian

+0

'SharedPreference'는 이것을 위해 설계되지 않았으므로 앞으로 당신을 기다릴 수 있습니다. 활동간에 데이터를 전달할 때는 항상'Intent'를 사용하십시오. – Sufian

+1

나중에 전체 답변을 게시하기 위해 기다리는 대신 지금 답변을 게시하십시오. 이 대답이 없다면 그다지 유용하지 않습니다. –

1

의도는 한 활동에서 다른 활동으로 값을 전달할 때 사용해야합니다.

당신은 같은 것을 할 수 있습니다 : 당신처럼 검색 할 수 있습니다, 당신의 ReceivingClass에 그런

List<DAIRY> listOfDairy = new ArrayList<DAIRY>(); 
// add dairy... 

Intent intent = new Intent(this, ReceivingClass.class); 
i.putExtra("KEY_DAIRY", listOfDairy); 
startActivity(intent); 

을이 하나 : 당신이 목록이 필요하지 않은 경우

List<DAIRY> dairyList = getIntent().getParcelableArrayListExtra("KEY_DAIRY"); 

은, 당신은 할 수 인 텐트를 통해 String/Boolean을 전달하십시오. 이 작업을 수행하려면

Intent intent = new Intent(this, ReceivingClass.class);  
i.putExtra("KEY_HAS_DAIRY", true); 
startActivity(intent); 

그런 다음

boolean hasDairy = getIntent().getBooleanExtra("KEY_HAS_DAIRY"); 
관련 문제