-1

Я пробовал этот проект в link. Все работает нормально. У меня тоже есть выход. Я хотел бы улучшить его, но я не знаю, что делать. У меня есть фон, мне нужно сохранить его в качестве фона для каждой строки gridlayoutmanager в recyclerview. Пожалуйста, помогите мне в этом. и спасибо заранееGridLayoutManager одинаковый фон для каждой строки

MainActivity.java 
public class MainActivity extends AppCompatActivity { 

RecyclerView recyclerView; 

Context context; 

RecyclerView.Adapter recyclerView_Adapter; 

RecyclerView.LayoutManager recyclerViewLayoutManager; 

String[] numbers = { 
     "one", 
     "two", 
     "three", 
     "four", 
     "five", 
     "six", 
     "seven", 
     "eight", 
     "nine", 
     "ten", 
     "eleven", 

}; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_main); 

    context = getApplicationContext(); 

    recyclerView = (RecyclerView) findViewById(R.id.recycler_view1); 


    recyclerViewLayoutManager = new GridLayoutManager(context, 2); 

    recyclerView.setLayoutManager(recyclerViewLayoutManager); 

    recyclerView_Adapter = new RecyclerViewAdapter(context,numbers); 

    recyclerView.setAdapter(recyclerView_Adapter); 

} 
} 

RecyclerViewAdapter.java 
public class RecyclerViewAdapter extends RecyclerView. 
Adapter<RecyclerViewAdapter.ViewHolder>{ 

String[] values; 
Context context1; 

public RecyclerViewAdapter(Context context2,String[] values2){ 

    values = values2; 

    context1 = context2; 
} 

public static class ViewHolder extends RecyclerView.ViewHolder{ 

    public TextView textView; 

    public ViewHolder(View v){ 

     super(v); 

     textView = (TextView) v.findViewById(R.id.textview1); 

    } 
} 

@Override 
public RecyclerViewAdapter.ViewHolder 
onCreateViewHolder(ViewGroup parent, int viewType){ 

    View view1 = LayoutInflater.from(context1).inflate 
(R.layout.recycler_view_items,parent,false); 

    ViewHolder viewHolder1 = new ViewHolder(view1); 

    return viewHolder1; 
} 

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

    Vholder.textView.setText(values[position]); 

    Vholder.textView.setBackgroundColor(Color.CYAN); 

    Vholder.textView.setTextColor(Color.BLUE); 

} 

@Override 
public int getItemCount(){ 

    return values.length; 
} 
} 
+0

доля некоторый код - ваш фон, адаптер, не ожидайте нас чтобы проверить проект, создайте ссылку в вопросе, чтобы помочь вам –

+0

, поэтому, когда вы устанавливаете фон на recycler_view_items, ничего не происходит? –

+0

Этот фон будет показан в каждом элементе, но мне нужен этот фон для каждой строки. –

ответ

0

Easy Hack: U можно использовать LinearLayout менеджер вместо gridLayoutManager. Тогда и может изменить расположение элементов (макет для каждого элемента в adpater т.е.: recycler_view_items) в

что-то вроде этого

<LinearLayout 
background: set it as ur image> 
    <LinearLayout> 
    // first item 
    </LinearLayout> 

    <LinearLayout> 
    //2nd item 
    </LinearLayout> 

<LinearLayout> 

и изменить адаптер для установки значений соответственно. Требуется замена макетов и кодов адаптера. Это будет работать для и, как и можно установить фон для каждой строки

(PS: Каждая строка теперь считается как один элемент)

+0

Спасибо, но мне нужно использовать gridlayoutmanager, потому что я показываю элементы только в сетке. В представлении Grid у меня есть каждая строка с одинаковым изображением. –

+0

grid layout не поможет вам достичь этого. .adapter использует каждый объект отдельно для рисования Предметы. u не получит доступ к каждой строке внутри адаптера – Vicky

+0

ОК, спасибо Вики :) –

Смежные вопросы