チャットボットを作成しようとしていますが、のアダプタにTextView
を置き換える方法はありません。あなたが見ることができるように、すべての応答が、現在先頭に並んでいるAndroidのTextViewの位置をRecyclerViewのアダプタからどのように置き換えるのですか?
、私はRecyclerView
のアダプタから他の側に一人から回答を移動したいと思います:下のスクリーンショットを参照してください。 。ここでは、アダプタのコードです:
CustomAdapter.class
今<TextView android:id="@+id/chatMessage"
android:layout_width="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android" />
が、私は別の解決策を作った
public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.FeedsViewHolder>
{
DataHolder d1 = new DataHolder();
public class FeedsViewHolder extends RecyclerView.ViewHolder
{
private TextView chat;
private Typeface face;
FeedsViewHolder(View itemView)
{
super(itemView);
chat = (TextView)itemView.findViewById(R.id.chatMessage);
face = Typeface.createFromAsset(itemView.getContext().getAssets(), "fonts/Roboto-Regular.ttf");
chat.setTypeface(face);
}
}
private static class DataHolder
{
List<Text> feeds;
}
CustomAdapter(List<Text> feeds)
{
this.d1.feeds = feeds;
}
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
}
@Override
public FeedsViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.chat_message, viewGroup, false);
FeedsViewHolder pvh = new FeedsViewHolder(v);
return pvh;
}
@Override
public void onBindViewHolder(FeedsViewHolder feedViewHolder, int i)
{
if(d1.feeds.get(i).isMachineOrHuman())
{
feedViewHolder.chat.setBackgroundResource(R.drawable.user);
feedViewHolder.chat.setTextAlignment(View.TEXT_ALIGNMENT_VIEW_END);
}
else
feedViewHolder.chat.setBackgroundResource(R.drawable.ais);
feedViewHolder.chat.setText(d1.feeds.get(i).getMessage());
}
@Override
public int getItemCount()
{
if(d1.feeds!=null)
{
return d1.feeds.size();
}
else
{
return 0;
}
}
}
chat_message.xmlが、それは2 TextView
を維持することですsをchat_message.xml
に設定し、未使用の表示設定を変更するTextView
。しかし、私が探しているのは、単一のTextView
でそれを行うことが可能かどうかということです。また、TextView
の背景は9-patch-image
であり、アダプタからバックグラウンドリソースとして割り当てられているため、TextView
を移動するとバックグラウンドが損なわれることはありません。どんな考えでも大歓迎です。 :)
1のTextView ... *私はのTextViewを移動するときに、それはまた、背景を台無しべきではありません。 * ...ハァッ?? – Selvin
Gravity.STARTとGravity.END(またはXMLのlayout_gravity)を使用して、重力をサポートするレイアウトでTextViewをラップすることができます –