-3
私のプロジェクトはフラグメントに基づいており、HypeLabsメッシュネットワークチャットを追加機能として実装しようとしています。添付のURLに示されているHype Labs Github Projectのアクティビティを、ChatFragmentやContactsFragmentなどの断片に変換するにはどうすればよいですか?ListViewアダプタからフラグメントのRecyclerViewアダプタに変換
次のようにオリジナルのContactsViewAdapterは次のとおりです。
public class DirectContactsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
protected final Activity mActivity;
private Map<String, Store> stores;
public DirectContactsAdapter(@NonNull Activity mActivity, Map<String, Store> stores) {
this.mActivity = mActivity;
this.stores = stores;
}
protected Map<String, Store> getStores() {
return stores;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView;
itemView = LayoutInflater.from(mActivity).inflate(R.layout.row_direct_contacts, parent, false);
return new DirectContactsViewHolder(itemView);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if(holder instanceof DirectContactsViewHolder) {
final DirectContactsViewHolder directContactsHolder = (DirectContactsViewHolder) holder;
final Store contactsStore = this.stores.get(position);
try {
directContactsHolder.displayName.setText(contactsStore.getInstance().getRealmStringIdentifier());
directContactsHolder.contentIndicator.setVisibility(contactsStore.hasNewMessages
() ? View.VISIBLE : View.INVISIBLE);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(DirectContactsFragment.this, DirectChatsFragment
.class);
TextView displayName = (TextView) view.findViewById(R.id.display_name);
CharSequence charSequence = displayName.getText();
setDisplayName(charSequence.toString());
Store store = chatApplication.getStores().get(getDisplayName());
store.setDelegate(contactActivity);
intent.putExtra(ChatActivity.INTENT_EXTRA_STORE, store.getInstance().getStringIdentifier());
startActivity(intent);
}
});
} catch (Exception e) {
AppHelper.LogCat("Contacts adapters Exception " + e.getMessage());
}
}
}
@Override
public int getItemCount() {
return stores.size();
}
public Store getItem(int position) {
return stores.get(position);
}
public class DirectContactsViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.avatar)
ImageView userImage;
@BindView(R.id.display_name)
TextView displayName;
@BindView(R.id.new_content)
ImageView contentIndicator;
DirectContactsViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
}
}}
私はフラグメントとAndroid Studioがさらに私を混乱させる発生例に非常に新しいです。
ご協力いただきまして誠にありがとうございます。
をそうウル問題は何ですか?なんでしょう?あなたのアダプタは正しいようです。しかし、何かを表示するためにonBindViewHolderメソッドにいくつかのコードを入れなければなりません。 – borune
あなたのコメントのために、こんにちは@ボルンありがとう。うん、RecyclerViewAdapterは正しいようですが、実装されていないListViewAdapterには何かがあります。たとえば、onTouchイベントのように、別のアクティビティがいくつかのデータを渡すようになっているようです。私はフラグメントの意図を使用することができないことも知っているので、どうすればこの問題を解決できますか?これまでのところ、私はGoogleのいくつかの調査に基づいています。上記のコードを更新しました。 –