Я хочу добавить несколько элементов данных одной и той же даты в одном карточном представлении в Android - PullRequest
0 голосов
/ 08 июля 2019

Я хочу, чтобы данные отображались, как показано на изображении введите описание изображения здесь

Я хочу добавить несколько элементов одной и той же даты в виде одной карты вместо создания другого вида карты дляэлемент с той же датой

Я пробовал в представлении Android Studio групповое представление, называемое разрешенным представлением Recycler, где я использовал дату в качестве заголовка, но это не решение

My Adapter Class

   private Context mContext;
            List<ListItem> consolidatedList = new ArrayList<>();

            public AttendanceAdapter(Context context, List<ListItem> 
            consolidatedList) {
                this.consolidatedList = consolidatedList;
                this.mContext = context;
            }

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

                    RecyclerView.ViewHolder viewHolder = null;
                    LayoutInflater inflater = 
              LayoutInflater.from(parent.getContext());

                    switch (viewType) {
                        case ListItem.TYPE_GENERAL:
                            View v1 = 
             inflater.inflate(R.layout.attendance_adapter_layout, parent,
                                    false);
                            viewHolder = new GeneralViewHolder(v1);
                            break;

                        case ListItem.TYPE_DATE:
                            View v2 = 
            inflater.inflate(R.layout.attn_item_header, parent, false);
                            viewHolder = new DateViewHolder(v2);
                            break;
                    }

                return viewHolder;
            }

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

                switch (viewHolder.getItemViewType()) {

                    case ListItem.TYPE_GENERAL:

           GeneralItem generalItem   = (GeneralItem) 
           consolidatedList.get(position);

          GeneralViewHolder generalViewHolder=
          (GeneralViewHolder) viewHolder;

         //generalViewHolder.txt_date.setText( 
          generalItem.getAttendance_data().getDate());

          generalViewHolder.txt_month.setText( 
          generalItem.getAttendance_data().getMonth_name());

          generalViewHolder.txt_date.setText( 
          generalItem.getAttendance_data().getDate_no());

          generalViewHolder.txt_out.setText( 
          generalItem.getAttendance_data().getAttn_out_time());

          generalViewHolder.txt_in.setText(
          generalItem.getAttendance_data().getAttn_In_time());


         generalViewHolder.txtreason.setText          
         (generalItem.getAttendance_data().getRemark());

                        break;

                    case ListItem.TYPE_DATE:
             DateItem dateItem = (DateItem)                    
             consolidatedList.get(position);
             DateViewHolder dateViewHolder = (DateViewHolder) viewHolder;


        dateViewHolder.txtTitle.setText(dateItem.getDate());
                        // Populate date item data here
                        break;
                }
            }

        class DateViewHolder extends RecyclerView.ViewHolder {
                protected TextView txtTitle;

                public DateViewHolder(View v) {
                    super(v);
                    this.txtTitle = (TextView) 
            v.findViewById(R.id.attn_date);

                }
            }

            // View holder for general row item
            class GeneralViewHolder extends RecyclerView.ViewHolder {

              protected TextView 
              txt_in,txtreason,txt_out,txt_date,txt_month;

                public GeneralViewHolder(View v) {
                   super(v);
                    this.txt_in =v.findViewById(R.id.attn_in_txt);
                    this.txt_out=v.findViewById(R.id.attn_out_txt);
                    this.txtreason=v.findViewById(R.id.attn_reason_txt);
                    this.txt_date=v.findViewById(R.id.date_view);
                    this.txt_month=v.findViewById(R.id.month_view);

                }
            }

            @Override
            public int getItemViewType(int position) {
                return consolidatedList.get(position).getType();
            }


    @Override
            public int getItemCount() {
            return consolidatedList != null ? consolidatedList.size() : 0;
            }

        }


  MainActivity.Java


    public class CurrentMonth extends AsyncTask<Void,Void,Void> {

    @Override
    protected Void doInBackground(Void... voids) {
        attn_list_data_cur_month();
        return null;
    }

    @Override
    protected void onPostExecute(Void aVoid) {
        super.onPostExecute(aVoid);
        updateUi();
    }

    @Override
    protected void onProgressUpdate(Void... values) {
        super.onProgressUpdate(values);
    }
}

     public void attn_list_data_cur_month(){
    try {
        this.connection=createConnection();
        Statement stmt=connection.createStatement();
        Calendar current_month_data = Calendar.getInstance();
        current_month_data.add(Calendar.MONTH, 0);
        //Calendar current_month_date = Calendar.getInstance();
        //current_month_date.set(Calendar.DAY_OF_MONTH,0);
        n=current_month_data.get(Calendar.DAY_OF_MONTH);
        String current_month_year = new SimpleDateFormat("MMM- 
        yyyy").format(current_month_data.getTime());
        String month_name=currentMonth.getText().toString();

        for (int i=1;i<=n;i++) {
            String date = i + "-" + current_month_year;

            ResultSet resultSet = stmt.executeQuery("Select * from 
            MATTN_MAS where ATTN_DATE='" + date + "' and Username='" + 
            Username + "'");

            String Attn_Type;

            if (resultSet.next()) {
                while (resultSet.next()) {
                    Attn_Type = resultSet.getString(8);
                    String Time = null;
                    String Reason = resultSet.getString(11);

                    if (Attn_Type.equals("I")) {
                        String Attn_Type_In = "I";
                        String Attn_Type_Out = null;
                 StringBuilder stringBuilder = new StringBuilder("" + i);
                 String date_no = stringBuilder.toString();

                  myOptions.add(new Attendance_Data(Attn_Type_In, 
                  date, Reason, Attn_Type_Out, i, date_no, month_name));

                 } else {

                  String Attn_Type_Out = "O";
                        String Attn_Type_In = null;
                  StringBuilder stringBuilder = new StringBuilder("" + i);
                  String date_no = stringBuilder.toString();

                  myOptions.add(new Attendance_Data(Attn_Type_In, 
                  date, Reason, Attn_Type_Out, i, date_no, month_name));

                   }
                }
            } else {
                Attn_Type = "Absent";
                String Time = null;
                String Reason = null;
                String out = null;

                StringBuilder stringBuilder = new StringBuilder("" + i);
                String date_no = stringBuilder.toString();

                myOptions.add(new Attendance_Data(Attn_Type, date, Reason, 
                out, i, date_no, month_name));
            }
        }
    }catch (Exception e){
        System.out.println("my Error"+e);
    }
}


    public void updateUi(){
    //sortedData= (List<PojoOfJsonArray>) 
    PojoOfJsonArray.sortList(myOptions);
    HashMap<String, List<Attendance_Data>> groupedHashMap = 
     groupDataIntoHashMap(myOptions);

    for (String date1 : groupedHashMap.keySet()) {
        DateItem dateItem = new DateItem();
        dateItem.setDate(date1);
        consolidatedList.add(dateItem);

        for (Attendance_Data pojoOfJsonArray : groupedHashMap.get(date1)) 
        {
            GeneralItem generalItem = new GeneralItem();
            generalItem.setAttendance_data(pojoOfJsonArray);
            consolidatedList.add(generalItem);
        }
    }
    adapter = new AttendanceAdapter(this, consolidatedList);
    LinearLayoutManager layoutManager = new LinearLayoutManager(this);
    layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
    attn_report_view.setLayoutManager(layoutManager);
    attn_report_view.setAdapter(adapter);
   }

  private HashMap<String, List<Attendance_Data>> 
  groupDataIntoHashMap(List<Attendance_Data> listOfPojosOfJsonArray) {

    HashMap<String, List<Attendance_Data>> groupedHashMap = new HashMap<> 
    ();

    for (Attendance_Data pojoOfJsonArray : listOfPojosOfJsonArray) {

        String hashMapKey = pojoOfJsonArray.getDate();

        if (groupedHashMap.containsKey(hashMapKey)) {
            // The key is already in the HashMap; add the pojo object
            // against the existing key.
            groupedHashMap.get(hashMapKey).add(pojoOfJsonArray);
        } else {

            List<Attendance_Data> list = new ArrayList<>();
            list.add(pojoOfJsonArray);
            groupedHashMap.put(hashMapKey, list);
        }
    }
    return groupedHashMap;
 }

Я хочу добавить несколько элементоводной и той же даты в одном и том же виде одной карты, но вместо этого создается несколько видов карт для нескольких элементов одной даты

Ответы [ 2 ]

0 голосов
/ 17 июля 2019
Yeah I found the solution it worked perfect for Me.....we 
have to just make changes to the card View by removing 
spaces..

.

like this below...

 <android.support.v7.widget.CardView
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  card_view:cardMaxElevation="0.1dp"
  xmlns:card_view="http://schemas.android.com/apk/res-auto"
  android:background="#303030"
  card_view:cardElevation="5dp"
  android:foreground="?android:attr/selectableItemBackground"
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_marginLeft="@dimen/dp_2"
  android:layout_marginRight="@dimen/dp_2">


    <...Your All Text Boxes and further Layout inside this 
    cardView...>


  </android.support.v7.widget.CardView>

 and I have add Header for each CardView....and it looks like 
 this  

Outout показан на изображении ниже

0 голосов
/ 08 июля 2019

Вы должны использовать RecyclerView Multiple ViewTypes.для подробностей, пожалуйста, проверьте этот пример .

Также посетите этот пример.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...