2017-12-11 13 views
0

내 응용 프로그램에는 2 개의 활동이 있습니다.recyclerView를 정렬하는 방법, 항목을 열었을 때 읽지 않은 상태와 굵은 항목이없는 경우 굵은 항목?

  • activityMain 세 번째 단편은 대화 목록 3 개 단편을 포함한다. 이것은 각 항목이 특정 채팅으로 연결되는 recylerView입니다.

  • activityConversation에는 채팅이 있습니다.

먼저 "last actives"의 순서로 recyclerView에서 대화를 정렬하고 싶습니다. 가장 최근의 활성 상태는 목록 상단에 표시되어야하고, 두 번째 활동 상태에서는 두 번째 마지막 상태로 표시되어야합니다.

두 번째로, recyclerView의 각 Item에는 Textview가 포함되어 있습니다. 각 항목에 대해이 대화방에 게시 된 마지막 메시지를이 Texview에 표시하고 싶습니다.

마지막으로 마지막 채팅 업데이트까지 대화가 열리지 않았으므로 마지막으로이 항목 textViews를 굵게 표시하고 싶습니다.

그 목표를 달성 할 수있는 아이디어가 누구에게 있습니까? 여기

내 채팅 활동 :

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_conversation); 
    getWindow().setBackgroundDrawableResource(R.drawable._background_black_lchatxxxhdpi) ; 

    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
    mToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.open, R.string.close); 

    mDrawerLayout.addDrawerListener(mToggle); 
    mToggle.syncState(); 

    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 


    LinearLayout leftNav = (LinearLayout)findViewById(R.id.conv_left_nav); 
    LinearLayout helperAdmin = (LinearLayout) getLayoutInflater().inflate(R.layout.list_participant_admin, leftNav, false); 
    leftNav.addView(helperAdmin); 


    final EditText input_post = (EditText)findViewById(R.id.input_post); 


    context = this; 
    input_post.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      ImageButton btn_submit = (ImageButton)findViewById(R.id.btn_submit); 
      btn_submit.setEnabled(!TextUtils.isEmpty(s.toString().trim())); 



     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, 
             int after) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void afterTextChanged(Editable s) { 
      // TODO Auto-generated method stub 

     } 
    }); 


    Intent intent = getIntent(); 
    if (intent.hasExtra("conversationId")) 
     conversationId = intent.getStringExtra("conversationId"); 

    rpcHelper = new RPCHelper(context, this); 
    String unique_device_id = Settings.Secure.getString(this.getContentResolver(), Settings.Secure.ANDROID_ID); 
    Log.i("US", unique_device_id); 
    rpcHelper.loginOrRegister(unique_device_id, new AsyncResponseListener() { 
     @Override 
     public void onResponse(JSONArray response) throws JSONException { 
      refreshConversation(); 
     } 

     @Override 
     public void onResponse() { 

     } 

     @Override 
     public void onResponse(Bitmap bm) { 

     } 

     @Override 
     public void onPreExecute() { 
     } 
    }); 

    dbHelper = new DataBaseHelper(context, "us", null, Statics.DB_VERSION); 

    userInConv = dbHelper.dbReader.getUserInConversation(Integer.parseInt(conversationId)); 
    storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES); 

    leftRecycler = (RecyclerView) helperAdmin.findViewById(R.id.conv_left_recycler); 

    //mRecyclerView.setHasFixedSize(true); 

    // use a linear layout manager 
    leftLayoutManager = new LinearLayoutManager(this); 
    leftRecycler.setLayoutManager(leftLayoutManager); 


    leftAdapter = new ConvLeftAdapter(userInConv, storageDir, Integer.parseInt(conversationId)); 
    leftRecycler.setAdapter(leftAdapter); 

    helpersImg = new View[3]; 
    helpers = new DataBaseReader.User[3]; 

    photos = dbHelper.dbReader.getPhotosInConversation(Integer.parseInt(conversationId)); 

    photoRecycler = (RecyclerView) findViewById(R.id.photo_recycler); 
    photoLayoutManager = new GridLayoutManager(this, Math.max(photos.length, 1)); 
    photoRecycler.setLayoutManager(photoLayoutManager); 

    rightAdapter = new ConvRightAdapter(photos, storageDir, context); 
    photoRecycler.setAdapter(rightAdapter); 

    IntentFilter filter = new IntentFilter(Statics.ACTION_NEW_POST); 
    this.registerReceiver(new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context ctx, Intent intent) { 
      Log.d("new", " message"); 
      refreshConversation(); 
     } 
    }, filter); 


} 

@Override 
public void onNewIntent(Intent intent){ 
    if (intent.hasExtra("conversationId")) 
     conversationId = intent.getStringExtra("conversationId"); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu_conversation, menu); 


    DataBaseReader.Conversation conversation = dbHelper.dbReader.getConversation(conversationId); 
    DataBaseReader.User owner = dbHelper.dbReader.getConversationOwner(conversationId); 

    final ImageView owner_img = (ImageView)findViewById(R.id.img_userprofilpic); 
    TextView owner_name = (TextView)findViewById(R.id.lbl_username_owner); 
    TextView owner_city = (TextView)findViewById(R.id.lbl_usercity_owner); 
    TextView conversation_question = (TextView)findViewById(R.id.question_text); 

    owner_name.setText(owner.name); 
    owner_city.setText(owner.city); 
    conversation_question.setText(conversation.question.text); 

    conversation_question.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      TextView text = (TextView)findViewById(R.id.question_text); 
      int maxLines = TextViewCompat.getMaxLines(text); 

      if (maxLines==2){ 
       text.setMaxLines(Integer.MAX_VALUE); 
      } 
      else{ 
       text.setMaxLines(2); 
      } 
           } 


     }); 


    rpcHelper.getPhoto(storageDir + "/", owner.photo, new AsyncResponseListener() { 

     @Override 
     public void onResponse(JSONArray response) throws JSONException { 
     } 

     @Override 
     public void onResponse() { 
     } 

     @Override 
     public void onResponse(Bitmap bm) { 
      owner_img.setImageBitmap(bm); 
     } 

     @Override 
     public void onPreExecute() { 
     } 

    }); 

    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    if(mToggle.onOptionsItemSelected(item)){ 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

public void refreshConversation(){ 

    dbHelper.dbSyncer.syncPosts(rpcHelper.user_id, new AsyncResponseListener() { 
     @Override 
     public void onResponse(JSONArray response) throws JSONException { 

      DataBaseReader.Post[] posts = dbHelper.dbReader.getPosts(conversationId); 

      postsRecycler = (RecyclerView) findViewById(R.id.posts_recycler); 
      postsLayoutManager = new LinearLayoutManager(context); 
      postsRecycler.setLayoutManager(postsLayoutManager); 

      postsAdapter = new PostsAdapter(posts, storageDir, rpcHelper); 
      postsRecycler.setAdapter(postsAdapter); 

      postsRecycler.scrollToPosition(postsAdapter.getItemCount() - 1); 


     } 

     @Override 
     public void onResponse() { 

     } 

     @Override 
     public void onResponse(Bitmap bm) { 

     } 

     @Override 
     public void onPreExecute() { 

     } 
    }); 

/* rpcHelper.getPosts (conversationId, 새로운 AsyncResponseListener()이 대화 목록 내 조각이다

{

 @Override 
     public void onResponse(JSONArray response) throws JSONException { 
      LinearLayout posts_root = (LinearLayout) findViewById(R.id.posts_root); 
      posts_root.removeAllViews(); 

      for (int i = 0; i < response.length(); i++){ 
       Log.d("Conv refresh", response.get(i) + ""); 
       final JSONObject jConversation = (JSONObject) response.get(i); 

       LinearLayout post; 
       if (jConversation.getString("userId") == rpcHelper.user_id) { 
        post = (LinearLayout) getLayoutInflater().inflate(R.layout.item_chatpost_sent, posts_root, false); 
       } 
       else{ 
        post = (LinearLayout) getLayoutInflater().inflate(R.layout.item_chatpost_received, posts_root, false); 
        ((TextView)post.findViewById(R.id.post_name_)).setText(jConversation.getString("name")); 
       } 
       ((TextView)post.findViewById(R.id.lbl_message_chat)).setText(jConversation.getString("text")); 

       posts_root.addView(post); 

      } 

      hideProcessDialog(); 
     } 

     @Override 
     public void onResponse() { 

     } 

     @Override 
     public void onResponse(Bitmap bm) { 

     } 

     @Override 
     public void onPreExecute() { 

     } 
    });*/ 
} 

public void onSubmit(View v){ 

    final EditText input_post = (EditText)findViewById(R.id.input_post); 
    String post_text = input_post.getText().toString(); 

    rpcHelper.post(conversationId, post_text, new AsyncResponseListener() { 
     @Override 
     public void onResponse(JSONArray response) throws JSONException { 
      refreshConversation(); 
      input_post.setText(""); 
     } 

     @Override 
     public void onResponse() { 

     } 

     @Override 
     public void onResponse(Bitmap bm) { 

     } 

     @Override 
     public void onPreExecute() { 

     } 
    }); 


} 


    Button no = (Button)alertDialog.findViewById(R.id.btn_cancel); 
    no.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      helpersImg[0] = null; 
      helpersImg[1] = null; 
      helpersImg[2] = null; 
      helpers[0] = null; 
      helpers[1] = null; 
      helpers[2] = null; 
      alertDialog.dismiss(); 
     } 
    }); 

} 

public void onSelectUser(View v){ 
    View vi = snapHelper.findSnapView(participantsLayoutManager); 

    if (helpersImg[0] == vi || helpersImg[1] == vi || helpersImg[2] == vi) 
     return; 


    Log.i("get helper Id", ""+ participantsAdapter.selectedUserId); 

    ImageView photo = (ImageView) vi.findViewById(R.id.img_userprofilpic); 
    photo.setDrawingCacheEnabled(true); 
    Bitmap bmap = photo.getDrawingCache(); 

    ImageView helperImage = null; 
    if (helpersImg[0] == null) { 
     helperImage = (ImageView) alertDialog.findViewById(R.id.reward_dialog_helper0); 
     helpersImg[0] = vi; 
     helperImage.setImageBitmap(bmap); 
     photo.setColorFilter(Color.rgb(123, 123, 123), android.graphics.PorterDuff.Mode.MULTIPLY); 

     helpers[0] = userInConv[participantsAdapter.selectedUserId]; 
    } 
    else if (helpersImg[1] == null){ 
     helperImage = (ImageView) alertDialog.findViewById(R.id.reward_dialog_helper1); 
     helpersImg[1] = vi; 
     helperImage.setImageBitmap(bmap); 
     photo.setColorFilter(Color.rgb(123, 123, 123), android.graphics.PorterDuff.Mode.MULTIPLY); 


     helpers[1] = userInConv[participantsAdapter.selectedUserId]; 
    } 
    else if (helpersImg[2] == null){ 
     helperImage = (ImageView) alertDialog.findViewById(R.id.reward_dialog_helper2); 
     helpersImg[2] = vi; 
     helperImage.setImageBitmap(bmap); 
     photo.setColorFilter(Color.rgb(123, 123, 123), android.graphics.PorterDuff.Mode.MULTIPLY); 

     helpers[1] = userInConv[participantsAdapter.selectedUserId]; 
    } 
    else{ 
     return; 
    } 
} 

/**private void showTipDialog(){ 
    final AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(context); 
    LayoutInflater inflater = LayoutInflater.from(context); 
    final View dialogView = inflater.inflate(R.layout.dialog_add_tip, null); 

    final EditText value = (EditText) dialogView.findViewById(R.id.tip_value); 
    final SeekBar sb = (SeekBar) dialogView.findViewById(R.id.seekBar); 
    sb.setMax(50); 
    sb.setProgress(5); 

    sb.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
     @Override 
     public void onProgressChanged(SeekBar seekBar, int progress, boolean b) { 

      progress = (Math.round(progress/5))*5; 
      seekBar.setProgress(progress); 

      value.setText(String.valueOf(progress)); 

     } 

     @Override 
     public void onStartTrackingTouch(SeekBar seekBar) { 

     } 

     @Override 
     public void onStopTrackingTouch(SeekBar seekBar) { 

     } 
    }); 

    value.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) {} 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      // Convert text to integer. Do you already use editText.setInputType(InputType.TYPE_CLASS_NUMBER), don't you? 
      Integer enteredProgress = Integer.valueOf(s.toString()); 
      sb.setProgress(enteredProgress); 
     } 

     @Override 
     public void afterTextChanged(Editable s) {}}); 

    dialogBuilder.setView(dialogView); 

    alertDialog = dialogBuilder.create(); 
    alertDialog.show(); 

    Button ok = (Button)alertDialog.findViewById(R.id.btn_ok); 
    ok.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      alertDialog.dismiss(); 
     } 
    }); 
    Button no = (Button)alertDialog.findViewById(R.id.btn_no); 
    no.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      alertDialog.dismiss(); 
     } 
    }); 
}*/ 

public void removeHelper(View v){ 
    int index = 0; 
    if (v == alertDialog.findViewById(R.id.reward_dialog_helper0)){ 
     index = 0; 
    } 
    else if (v == alertDialog.findViewById(R.id.reward_dialog_helper1)){ 
     index = 1; 
    } 
    else if (v == alertDialog.findViewById(R.id.reward_dialog_helper2)){ 
     index = 2; 
    } 
    if (helpersImg[index] == null){ 
     return; 
    } 

    ImageView photo = (ImageView) helpersImg[index].findViewById(R.id.img_userprofilpic); 
    photo.setDrawingCacheEnabled(true); 
    photo.clearColorFilter(); 
    helpersImg[index] = null; 
    helpers[index] = null; 

    ImageView imv = (ImageView)v; 
    imv.setImageResource(R.drawable.stroke_rounded_corners_white); 
} 

private void showProcessDialog(){ 
    pd = new ProgressDialog(this); 
    pd.setTitle("Processing"); 
    pd.setMessage("Please wait..."); 
    pd.setCancelable(false); 
    pd.setIndeterminate(true); 
    pd.show(); 
} 

private void hideProcessDialog(){ 
    pd.hide(); 
} 

@Override 
public void onInternetConnectionLost() { 

} 

@Override 
public void onInternetConnectionFound() { 

} 

public void onTakePicture(View v){ 
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    if (takePictureIntent.resolveActivity(getPackageManager()) != null) { 
     startActivityForResult(takePictureIntent, Statics.REQUEST_IMAGE_CAPTURE); 
    } 
} 

public void onTakePictureFromGallery(View v){ 
    Intent intent = new Intent(); 
    intent.setType("image/*"); 
    intent.setAction(Intent.ACTION_GET_CONTENT); 
    startActivityForResult(Intent.createChooser(intent, 
      "Select Picture"), Statics.REQUEST_PROFILE_IMAGE_GALLERY); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    Bitmap imageBitmap; 
    if ((requestCode == Statics.REQUEST_IMAGE_CAPTURE || requestCode == Statics.REQUEST_IMAGE_CAPTURE_0 
      || requestCode == Statics.REQUEST_IMAGE_CAPTURE_1 || requestCode == Statics.REQUEST_IMAGE_CAPTURE_2) && resultCode == RESULT_OK && data != null) { 
     Bundle extras = data.getExtras(); 
     if (extras == null){ 
      return; 
     } 
     imageBitmap = (Bitmap) extras.get("data"); 
     addPhoto(imageBitmap); 

    } 
    else if (requestCode == Statics.REQUEST_PROFILE_IMAGE_GALLERY && resultCode == RESULT_OK){ 
     try { 
      imageBitmap = getBitmapFromUri(data.getData()); 
      addPhoto(imageBitmap); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

private void addPhoto(Bitmap image) { 
    DataBaseReader.Conversation c = dbHelper.dbReader.getConversation(conversationId); 

    String encodedImage = encodeBitmap(image); 
    rpcHelper.addPhotosToQuestion("" + c.question.id, encodedImage, null, null, new AsyncResponseListener() { 
     @Override 
     public void onResponse(JSONArray response) throws JSONException { 

      dbHelper.dbSyncer.sync(rpcHelper.user_id, new AsyncResponseListener() { 
       @Override 
       public void onResponse(JSONArray response) throws JSONException { 
        photos = dbHelper.dbReader.getPhotosInConversation(Integer.parseInt(conversationId)); 
        photoRecycler = (RecyclerView) findViewById(R.id.photo_recycler); 
        photoLayoutManager = new GridLayoutManager(context, Math.max(photos.length, 1)); 
        photoRecycler.setLayoutManager(photoLayoutManager); 

        rightAdapter = new ConvRightAdapter(photos, storageDir, context); 
        photoRecycler.setAdapter(rightAdapter); 

       } 

       @Override 
       public void onResponse() { 
        photos = dbHelper.dbReader.getPhotosInConversation(Integer.parseInt(conversationId)); 
        photoRecycler = (RecyclerView) findViewById(R.id.photo_recycler); 
        photoLayoutManager = new GridLayoutManager(context, Math.max(photos.length, 1)); 
        photoRecycler.setLayoutManager(photoLayoutManager); 

        rightAdapter = new ConvRightAdapter(photos, storageDir, context); 
        photoRecycler.setAdapter(rightAdapter); 
       } 

       @Override 
       public void onResponse(Bitmap bm) { 

       } 

       @Override 
       public void onPreExecute() { 

       } 
      }); 

     } 

     @Override 
     public void onResponse() { 

     } 

     @Override 
     public void onResponse(Bitmap bm) { 

     } 

     @Override 
     public void onPreExecute() { 

     } 
    }); 

} 

private String encodeBitmap(Bitmap bitmap){ 
    try{ 
     bitmap = Bitmap.createScaledBitmap(bitmap, Statics.BITMAP_WIDTH, Statics.BITMAP_HEIGHT, true); 
     ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
     bitmap.compress(Bitmap.CompressFormat.JPEG, 90, stream); 
     final byte[] imageInByte = stream.toByteArray(); 
     return Base64.encodeToString(imageInByte, Base64.DEFAULT); 
    } 
    catch(Exception e){ 
     return ""; 
    } 

} 



private Bitmap getBitmapFromUri(Uri uri) throws IOException { 
    ParcelFileDescriptor parcelFileDescriptor = 
      getContentResolver().openFileDescriptor(uri, "r"); 
    FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor(); 
    Bitmap image = BitmapFactory.decodeFileDescriptor(fileDescriptor); 
    parcelFileDescriptor.close(); 
    return image; 
} 

} : public class ConversationFragment extends Fragment {

,
private View v; 

private OnFragmentInteractionListener mListener; 

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

/** 
* Use this factory method to create a new instance of 
* this fragment using the provided parameters. 
* 
* @return A new instance of fragment ConversationFragment. 
*/ 
// TODO: Rename and change types and number of parameters 
public static ConversationFragment newInstance() { 
    ConversationFragment fragment = new ConversationFragment(); 
    Bundle args = new Bundle(); 
    //args.putString(ARG_PARAM1, param1); 
    //args.putString(ARG_PARAM2, param2); 
    fragment.setArguments(args); 
    return fragment; 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if (getArguments() != null) { 
    } 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    if (v == null) { 
     v = inflater.inflate(R.layout.fragment_conversation, container, false); 
    } 

    final SwipeRefreshLayout swipeRefresh = (SwipeRefreshLayout)v.findViewById(R.id.swiperefreshconv); 
    swipeRefresh.post(new Runnable() { 
     @Override 
     public void run() { 
      swipeRefresh.setRefreshing(true); 
     } 
    }); 
    swipeRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { 
     @Override 
     public void onRefresh() { 
      mListener.syncDb(); 
     } 
    }); 

    return v; 
} 


@Override 
public void onStart(){ 
    super.onStart(); 
    mListener.refreshConversations(); 
} 


@Override 
public void onAttach(Context context) { 
    super.onAttach(context); 
    if (context instanceof OnFragmentInteractionListener) { 
     mListener = (OnFragmentInteractionListener) context; 
    } else { 
     throw new RuntimeException(context.toString() 
       + " must implement OnFragmentInteractionListener"); 
    } 
} 

@Override 
public void onDetach() { 
    super.onDetach(); 
    mListener = null; 
} 

}

이 내 대화 어댑터입니다 : 공용 클래스 ConversationsAdapter가 { 민간 최종 파일 mStorageDir RecyclerView.Adapter을 확장; 개인 최종 RPCHelper mRPCHelper; private DataBaseReader.Conversation [] mDataset;

Context context; 

// Provide a reference to the views for each data item 
// Complex data items may need more than one view per item, and 
// you provide access to all the views for a data item in a view holder 
public static class ViewHolder extends RecyclerView.ViewHolder { 
    // each data item is just a string in this case 
    public View mView; 
    public ViewHolder(View v) { 
     super(v); 
     mView = v; 

    } 
} 

// Provide a suitable constructor (depends on the kind of dataset) 
public ConversationsAdapter(DataBaseReader.Conversation[] myDataset, File storageDir) { 
    mDataset = myDataset; 
    mStorageDir = storageDir; 
    mRPCHelper = new RPCHelper(); 
} 

// Create new views (invoked by the layout manager) 
@Override 
public ConversationsAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, 
                int viewType) { 
    // create a new view 
    View v = LayoutInflater.from(parent.getContext()) 
      .inflate(R.layout.item_conversations, parent, false); 
    ViewHolder vh = new ViewHolder(v); 

    context = parent.getContext(); 
    return vh; 
} 

// Replace the contents of a view (invoked by the layout manager) 
@Override 
public void onBindViewHolder(ViewHolder holder, final int position) { 
    // - get element from your dataset at this position 
    // - replace the contents of the view with that element 
    Log.d("recy", "bind called"); 
    TextView username = (TextView)holder.mView.findViewById(R.id.lbl_username); 
    final TextView message = (TextView)holder.mView.findViewById(R.id.question_text); 
    TextView date_and_time = (TextView)holder.mView.findViewById(R.id.lbl_date_and_time); 
    ImageView status_pending = (ImageView)holder.mView.findViewById(R.id.lbl_status_conversation_pending); 
    ImageView status_in = (ImageView)holder.mView.findViewById(R.id.lbl_status_conversation_in); 
    TextView keyword0 = (TextView)holder.mView.findViewById(R.id.post_keywords0); 
    TextView keyword1 = (TextView)holder.mView.findViewById(R.id.post_keywords1); 
    TextView keyword2 = (TextView)holder.mView.findViewById(R.id.post_keywords2); 
    ImageView userprofilpic = (ImageView)holder.mView.findViewById(R.id.img_userprofilpic); 
    LinearLayout answer_info = (LinearLayout) holder.mView.findViewById(R.id.answer_info); 
    Button delete_coversation = (Button) holder.mView.findViewById(R.id.btn_confirm_delete); 



    userprofilpic.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent i = new Intent(context, UserProfileActivity.class); 
      i.putExtra("userId", mDataset[position].question.userId); 
      context.startActivity(i); 
     } 
    }); 

    username.setText(mDataset[position].question.userName); 
    message.setText(mDataset[position].question.text); 
    keyword0.setText(mDataset[position].question.keywords[0]); 
    keyword1.setText(mDataset[position].question.keywords[1]); 
    keyword2.setText(mDataset[position].question.keywords[2]); 
    addImgToView(mDataset[position].question.photo, userprofilpic); 

    if (Integer.parseInt(mDataset[position].confirmed) == 1) { 
     status_pending.setEnabled(false); 
     status_pending.setVisibility(View.GONE); 
     status_in.setVisibility(View.VISIBLE); 

     answer_info.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       message.setTypeface(Typeface.DEFAULT); 
       message.onSaveInstanceState(); 
       int convId = mDataset[position].id; 
       Intent i = new Intent(context, ConversationActivity.class); 
       i.putExtra("conversationId", "" + convId); 
       context.startActivity(i); 
      } 
     }); 
    } 


} 

// Return the size of your dataset (invoked by the layout manager) 
@Override 
public int getItemCount() { 
    return mDataset.length; 
} 

private void addImgToView(final String uri, final ImageView v){ 
    mRPCHelper.getPhoto(mStorageDir + "/", uri, new AsyncResponseListener() { 

     @Override 
     public void onResponse(JSONArray response) throws JSONException { 
     } 

     @Override 
     public void onResponse() { 
     } 

     @Override 
     public void onResponse(Bitmap bm) { 
      v.setImageBitmap(bm); 
     } 

     @Override 
     public void onPreExecute() { 
     } 

    }); 
} 

}는 시간에 미리 감사드립니다.

답변

0

스타일을 적용 할 수 있다는 것을 기반으로 읽거나 읽지 않은 것을 알 수있는 데이터 수준의 플래그를 유지합니다.

+0

고맙습니다. 좀 더 구체적으로 설명해 주시겠습니까? – Flo

0

두 가지 방법이 있습니다. 먼저 백엔드에 시간 소인의 마지막 활동 기준을 처리하도록 쿼리에 서버 측을 작성하도록 요청할 수 있습니다.이 경우 특정 대화를 열 때 서버에 특정 타임 스탬프를 보내야합니다. 다른 사용자는 대화를 읽거나 읽지 않을 때 쿼리를 업데이트하여 로컬 데이터베이스 (SQL 데이터베이스)를 만들고 코드에서 처리 할 수 ​​있습니다.

+0

답변 해 주셔서 감사합니다. – Flo

+0

나는 안드로이드에서 신선한 초보자이고 나는 그것이 나를 위해 접근 가능할 수 있었다고 생각했다. 그것은 그렇다?좀 더 구체적으로 설명해 주시겠습니까? – Flo