2017-12-11 5 views
0

私のアプリケーションには2つのアクティビティがあります。リサイクルビューをソートする方法、アイテムが開いている場合は未読とアンボールドの場合は太字アイテムですか?

  • activityMainは、第三の断片が会話リストで3つの断片 を含みます。これは、各Itemが特定のチャットにつながるrecylerViewです。

  • activityConversationにはチャットが含まれています。

まず、「last actives」の順番でrecyclerViewの会話を並べ替えたいと思います。最も最近のアクティブはリストの上に表示され、2番目の最後のアクティブは2番目のポストなどに表示されます。

第2に、recyclerViewの各ItemにはTextviewが含まれています。各項目について、このTexviewに関連するチャットに投稿された最後のメッセージを表示したいと思います。

最後に、最後のチャットの更新まで会話が開かれていないため、これらのItem 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フラグメント{

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はRecyclerView.Adapter { 民間最終ファイルmStorageDirを拡張。 プライベート最終RPCHelper mRPCHelper; プライベート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

これには2通りの方法があります。 まず、タイムスタンプの最後のアクティビティベースを処理するために、サーバー側にクエリを書き込むようにバックエンドに依頼できます。この場合、特定の会話を開くときに、サーバーに特定のタイムスタンプを送信する必要があります。 他の方法では、会話を読んだり読んだりしたりするときにクエリを更新することで、ローカルデータベース(SQLデータベース)を作成して自分のコードで処理することができます。

+0

ありがとうございました。 – Flo

+0

私はAndroidの新しい初心者です。私はそれが私のためにアクセス可能だったはずです...それは?あなたはもっと説明できますか? – Flo

関連する問題