私のアプリケーションでは、私はLinkedListでListViewをバックアップしています。私は、リストを埋めるためにカスタムArrayAdapterを使用しています:私は実現カスタムArrayAdapterでリストを安全に使用するにはどうすればよいですか?
public class CustomArrayAdapter extends ArrayAdapter<Message> {
Context context;
int resource;
public CustomArrayAdapter(Context context, int resource, List<Message> messages) {
super(context, resource, messages);
this.context = context;
this.resource = resource;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
MessageHolder messageHolder = null;
if(row == null){
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(resource, parent, false);
messageHolder = new MessageHolder();
messageHolder.chat_information = (TextView) row.findViewById(R.id.chat_information);
messageHolder.chat_message = (TextView) row.findViewById(R.id.chat_message);
row.setTag(messageHolder);
} else {
messageHolder = (MessageHolder) row.getTag();
}
Message message = getItem(position);
messageHolder.chat_information.setText(message.getSenderName() + Constants.NEWLINE + message.getSendTime());
messageHolder.chat_message.setText(message.getMessageText());
return row;
}
private class MessageHolder {
TextView chat_information;
TextView chat_message;
}
}
、しかし、そのLinkedListのは、スレッドセーフではありません。 ConcurrentLinkedQueueまたはLinkedBlockingDequeを使用しますが、配列を返すだけで、アダプタにはListが必要です。
このカスタムArrayAdapterをこれらのスレッドセーフメソッドの1つを使用するように変更する方法はありますか、またはリストを使用するためにオブジェクトの配列を反復処理する必要がありますか?
これはちょうど重複していないかもしれませんが、これを見て傷つくことはありません[回答](http://stackoverflow.com/a/6244952/5015207) – 0X0nosugar
あなたは、メインスレッド – tynn