0

私は Android アプリを作成しています。チャット バブル (吹き出し) を含むリスト ビューがあります。ユーザーがオプションから画像を挿入した場合、これらのチャット バブルに画像を追加したい場合、私のアプリは次のようになります -->

ここに画像の説明を入力

この画像をアプリに挿入したいのですが、ユーザーが画像ボタンから挿入すると、これまで自分でアダプターをカスタマイズしました。私の AwesomeAdapter クラスと Main_activity を見てください。

Main_Activity.java

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        start();
        text = (EditText) this.findViewById(R.id.txtMessage);
        sndButton=(Button)findViewById(R.id.buttonchat3);
        //sndButton.setEnabled(false);
        messages = new ArrayList<Message>();

        adapter = new AwesomeAdapter(this, messages);
        setListAdapter(adapter);

    }



    public void sendMessage(View v)
    {   
        String newMessage = text.getText().toString().trim(); 
        if(newMessage.length() > 0)
        {
            text.setText("");
            addNewMessage(new Message(newMessage, true));
            mConnection.sendTextMessage(newMessage);

        }
    }

    public void receiveImage(View v)
    {
        Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
        photoPickerIntent.setType("image/*");
        startActivityForResult(photoPickerIntent,RESULT_LOAD_IMAGE);    

    }

void addNewMessage(Message m)
    {
        messages.add(m);
        adapter.notifyDataSetChanged();
        getListView().setSelection(messages.size()-1);
    }

    @SuppressWarnings("static-access")
    void addReceivedMessage(Message m)
    {
        messages.add(m);
        adapter.notifyDataSetChanged();
        getListView().setSelection(messages.size()-1);
        v=(Vibrator) getSystemService(this.VIBRATOR_SERVICE);
        v.vibrate(200);
    }

AwesomeAdapter.java これは、このテキスト ボックスと 9 パッチ イメージをバックグラウンドで表示しているリスト ビューのアダプタ クラスです。

public class AwesomeAdapter は BaseAdapter を拡張します{

  private static final int TYPE_ITEM = 0;
  private static final int TYPE_SEPARATOR = 1;
  private static final int TYPE_MAX_COUNT = TYPE_SEPARATOR + 1;

private Context mContext;
private ArrayList<Message> mMessages;

 //private TreeSet mSeparatorsSet = new TreeSet();

public AwesomeAdapter(Context context, ArrayList<Message> messages) {
    super();
    this.mContext = context;
    this.mMessages = messages;
}
@Override
public int getCount() {
    return mMessages.size();
}
@Override
public Object getItem(int position) {

    return mMessages.get(position);
}

 @Override
 public int getItemViewType(int position) {
     if(my code to get text content) //it will fetch the textview layout 
     {
     return TYPE_SEPARATOR; 
     }
     else //it will fetch the image view layout
     {
   return TYPE_ITEM;
     }
 }

 @Override
 public int getViewTypeCount() {
     return TYPE_MAX_COUNT;
 }



@SuppressLint("ResourceAsColor")
@SuppressWarnings("deprecation")
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    Message message = (Message) this.getItem(position);

    ViewHolder holder; 
    int type = getItemViewType(position);
    if(convertView == null)
    {
        holder = new ViewHolder();
        switch (type) {
        case TYPE_ITEM:
        convertView = LayoutInflater.from(mContext).inflate(R.layout.sms_row, parent, false);
        holder.message = (TextView) convertView.findViewById(R.id.message_text);
         break;
        case TYPE_SEPARATOR:
            convertView = LayoutInflater.from(mContext).inflate(R.layout.sms_row2, parent, false);
            holder.message = (TextView) convertView.findViewById(R.id.message2);

            break;
        }
        convertView.setTag(holder);
    }
    else
        holder = (ViewHolder) convertView.getTag();

    holder.message.setText(message.getMessage());

    LayoutParams lp = (LayoutParams) holder.message.getLayoutParams();
    //check if it is a status message then remove background, and change text color.
    if(message.isStatusMessage())
    {
        holder.message.setBackgroundDrawable(null);
        lp.gravity = Gravity.LEFT;
        holder.message.setTextColor(R.color.textFieldColor);
    }
    else
    {       
        //Check whether message is mine to show green background and align to right
        if(message.isMine())
        {
            holder.message.setBackgroundResource(R.drawable.speech_bubble_orange);
            lp.gravity = Gravity.LEFT;
        }
        //If not mine then it is from sender to show orange background and align to left
        else
        {
            holder.message.setBackgroundResource(R.drawable.speech_bubble_green);
            lp.gravity = Gravity.RIGHT;
        }
        holder.message.setLayoutParams(lp);
        holder.message.setTextColor(R.color.textColor); 
    }
    return convertView;
}
private static class ViewHolder
{
    TextView message;
}

@Override
public long getItemId(int position) {
    //Unimplemented, because we aren't using Sqlite.
    return 0;
}

}

sms_row1 および sms_row2 ファイルを作成しました。この別のビューの作業を開始するにはどうすればよいですか。Android を初めて使用するので、多くの変更を試みましたが、まだ機能しません。事前に助けてください。

4

1 に答える 1