Android 通过对话框将项添加到listview
我正在使用一个自定义的listview,我想将它添加到我的listview中。但它似乎跳过了添加项目的所有代码。有人能告诉我如何调整我的代码来实现这一点吗 先谢谢你 这是我调用自定义对话框的主要活动Android 通过对话框将项添加到listview,android,Android,我正在使用一个自定义的listview,我想将它添加到我的listview中。但它似乎跳过了添加项目的所有代码。有人能告诉我如何调整我的代码来实现这一点吗 先谢谢你 这是我调用自定义对话框的主要活动 public class MainActivity extends ActionBarActivity { TextView threadId; ArrayList<MessageItem> items = new ArrayList<MessageItem>
public class MainActivity extends ActionBarActivity {
TextView threadId;
ArrayList<MessageItem> items = new ArrayList<MessageItem>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button newMessage = (Button) findViewById(R.id.new_message_button);
final Context context = this;
final ListView listView = (ListView) this.findViewById(R.id.messagingListView);
final ActivityAdapter itemAdapter = new ActivityAdapter(getApplicationContext(), this.MessageFeedData());
listView.setAdapter(itemAdapter);
listView.setTextFilterEnabled(true);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
listView.getAdapter().getItem(position);
MessageItem itemAtPos = (MessageItem) parent.getItemAtPosition(position);
Intent intent = new Intent(MainActivity.this, ConversationView.class);
intent.putExtra("threadId", String.valueOf(itemAtPos.ThreadId));
startActivity(intent);
}
});
newMessage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// custom dialog
final Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.write_message_layout);
dialog.setTitle("Title...");
// set the custom dialog components - text, image and button
final Button post_button = (Button) dialog.findViewById(R.id.button_post);
final EditText new_write_message = (EditText) dialog.findViewById(R.id.messge_msg);
final EditText to_message = (EditText) dialog.findViewById(R.id.to_newmsg);
post_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
items.add(new MessageItem(5458, to_message.getText().toString(), "imh", DateTime.now(), new_write_message.getText().toString()));
itemAdapter.notifyDataSetChanged();
if (v.getId() == R.id.button_post);
to_message.setText("");
new_write_message.setText("");
}
});
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(MainActivity.this, "Clicked", Toast.LENGTH_LONG)
.show();
}
});
dialog.show();
}
});
}
public ArrayList<MessageItem> MessageFeedData() {
ArrayList<MessageItem> items = new ArrayList<MessageItem>();
//recieved_item_click_actions fields
items.add(new MessageItem(1, "Bob Doe", "image", DateTime.now(), "Hello how are you?"));
items.add(new MessageItem(200, "Simon Pink", "image", DateTime.now(), "Hello what are you doing"));
return items;
}
class ActivityFeedTask extends AsyncTask<Integer, Void, Void> {
ArrayList<MessageItem> recentTracks;
@Override
protected Void doInBackground(Integer... page) {
try {
recentTracks = new ArrayList<MessageItem>();
Thread.sleep(3000);
MessageItem data = null;
for (int i = 0; i < 10; i++) {
recentTracks.add(data);
}
} catch (Exception e) {
}
return null;
}
}
public class ActivityAdapter extends ArrayAdapter<MessageItem> {
private final Context context;
private final ArrayList<MessageItem> items;
//private int currentPage = 0;
public ActivityAdapter(Context context, ArrayList<MessageItem> recentTrackArrayList) {
super(context, 0, recentTrackArrayList);
this.context = context;
this.items = recentTrackArrayList;
}
public View getView(int position, View convertView, ViewGroup parent) {
View rowView;
{
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = getLayoutInflater().inflate
(R.layout.message_list_item, parent, false);
rowView = convertView;
TextView comment2 = (TextView) rowView
.findViewById(R.id.messaging_username);
comment2.setText(items.get(position).Username);
ImageView comment3 = (ImageView) rowView
.findViewById(R.id.messaging_photo);
if (items.get(position).Image == null) {
comment3.setImageResource(R.drawable.ic_launcher);
}
TextView comment4 = (TextView) rowView
.findViewById(R.id.messaging_date);
comment4.setText(items.get(position).DateTimeStamp.toString());
TextView comment5 = (TextView) rowView
.findViewById(R.id.messaging_string);
comment5.setText(items.get(position).MessageString);
}
return convertView;
}
}
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<EditText
android:id="@+id/to_newmsg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TO" />
<EditText
android:id="@+id/messge_msg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/to_newmsg"
android:text="MESSAGE" />
<Button
android:id="@+id/button_post"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/messge_msg"
android:text="Send" />
</RelativeLayout>
公共类MainActivity扩展了ActionBarActivity{
TextView线程ID;
ArrayList items=新建ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
按钮newMessage=(按钮)findViewById(R.id.new\u message\u按钮);
最终上下文=此;
最终ListView ListView=(ListView)this.findViewById(R.id.messagingListView);
final ActivityAdapter itemAdapter=新的ActivityAdapter(getApplicationContext(),this.MessageFeedData());
setAdapter(itemAdapter);
setTextFilterEnabled(true);
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
listView.getAdapter().getItem(位置);
MessageItem itemAtPos=(MessageItem)parent.getItemAtPosition(position);
意向意向=新意向(MainActivity.this、ConversationView.class);
intent.putExtra(“threadId”,String.valueOf(itemAtPos.threadId));
星触觉(意向);
}
});
newMessage.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//自定义对话框
最终对话框=新对话框(上下文);
setContentView(R.layout.write_message_layout);
对话框。设置标题(“标题…”);
//设置自定义对话框组件-文本、图像和按钮
final Button post\u Button=(按钮)dialog.findviewbyd(R.id.Button\u post);
final EditText new_write_message=(EditText)dialog.findviewbyd(R.id.messge_msg);
final EditText to_message=(EditText)dialog.findViewById(R.id.to_newmsg);
post_按钮.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
添加(新的MessageItem(5458,to_message.getText().toString(),“imh”,DateTime.now(),new_write_message.getText().toString());
itemAdapter.notifyDataSetChanged();
如果(v.getId()==R.id.button\u post);
to_message.setText(“”);
新建写入消息。setText(“”);
}
});
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
Toast.makeText(MainActivity.this,“单击”,Toast.LENGTH\u LONG)
.show();
}
});
dialog.show();
}
});
}
公共ArrayList MessageFeedData(){
ArrayList items=新建ArrayList();
//已接收\u项目\u单击\u操作字段
添加(新消息项(1,“Bob Doe”,“image”,DateTime.now(),“你好吗?”);
添加(新的MessageItem(200,“Simon Pink”,“image”,DateTime.now(),“Hello你在做什么”);
退货项目;
}
类ActivityFeedTask扩展了AsyncTask{
ArrayList最近追踪;
@凌驾
受保护的Void doInBackground(整数…页){
试一试{
recentTracks=新的ArrayList();
睡眠(3000);
MessageItem数据=null;
对于(int i=0;i<10;i++){
添加(数据);
}
}捕获(例外e){
}
返回null;
}
}
公共类ActivityAdapter扩展了ArrayAdapter{
私人最终语境;
私人最终ArrayList项目;
//private int currentPage=0;
公共活动适配器(上下文上下文,ArrayList recentTrackArrayList){
super(context,0,recentTrackArrayList);
this.context=上下文;
this.items=recentTrackArrayList;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
视图行视图;
{
LayoutFlater充气器=(LayoutFlater)上下文
.getSystemService(上下文布局\充气机\服务);
convertView=GetLayoutFlater()。充气
(R.layout.message\u list\u项,父项,false);
rowView=convertView;
TextView comment2=(TextView)行视图
.findViewById(R.id.messaging_用户名);
comment2.setText(items.get(position.Username));
ImageView注释3=(ImageView)行视图
.findviewbyd(R.id.照片);
if(items.get(position.Image==null){
注释3.setImageResource(R.drawable.ic_启动器);
}
TextView comment4=(TextView)行视图
.findViewById(R.id.U日期);
comment4.setText(items.get(position.DateTimeStamp.toString());
TextView comment5=(TextView)行视图
.findViewById(R.id.messaging_字符串);
comment5.setText(items.get(position.MessageString));
}
返回视图;
}
}
}
这是我的自定义对话框
public class MainActivity extends ActionBarActivity {
TextView threadId;
ArrayList<MessageItem> items = new ArrayList<MessageItem>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button newMessage = (Button) findViewById(R.id.new_message_button);
final Context context = this;
final ListView listView = (ListView) this.findViewById(R.id.messagingListView);
final ActivityAdapter itemAdapter = new ActivityAdapter(getApplicationContext(), this.MessageFeedData());
listView.setAdapter(itemAdapter);
listView.setTextFilterEnabled(true);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
listView.getAdapter().getItem(position);
MessageItem itemAtPos = (MessageItem) parent.getItemAtPosition(position);
Intent intent = new Intent(MainActivity.this, ConversationView.class);
intent.putExtra("threadId", String.valueOf(itemAtPos.ThreadId));
startActivity(intent);
}
});
newMessage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// custom dialog
final Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.write_message_layout);
dialog.setTitle("Title...");
// set the custom dialog components - text, image and button
final Button post_button = (Button) dialog.findViewById(R.id.button_post);
final EditText new_write_message = (EditText) dialog.findViewById(R.id.messge_msg);
final EditText to_message = (EditText) dialog.findViewById(R.id.to_newmsg);
post_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
items.add(new MessageItem(5458, to_message.getText().toString(), "imh", DateTime.now(), new_write_message.getText().toString()));
itemAdapter.notifyDataSetChanged();
if (v.getId() == R.id.button_post);
to_message.setText("");
new_write_message.setText("");
}
});
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(MainActivity.this, "Clicked", Toast.LENGTH_LONG)
.show();
}
});
dialog.show();
}
});
}
public ArrayList<MessageItem> MessageFeedData() {
ArrayList<MessageItem> items = new ArrayList<MessageItem>();
//recieved_item_click_actions fields
items.add(new MessageItem(1, "Bob Doe", "image", DateTime.now(), "Hello how are you?"));
items.add(new MessageItem(200, "Simon Pink", "image", DateTime.now(), "Hello what are you doing"));
return items;
}
class ActivityFeedTask extends AsyncTask<Integer, Void, Void> {
ArrayList<MessageItem> recentTracks;
@Override
protected Void doInBackground(Integer... page) {
try {
recentTracks = new ArrayList<MessageItem>();
Thread.sleep(3000);
MessageItem data = null;
for (int i = 0; i < 10; i++) {
recentTracks.add(data);
}
} catch (Exception e) {
}
return null;
}
}
public class ActivityAdapter extends ArrayAdapter<MessageItem> {
private final Context context;
private final ArrayList<MessageItem> items;
//private int currentPage = 0;
public ActivityAdapter(Context context, ArrayList<MessageItem> recentTrackArrayList) {
super(context, 0, recentTrackArrayList);
this.context = context;
this.items = recentTrackArrayList;
}
public View getView(int position, View convertView, ViewGroup parent) {
View rowView;
{
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = getLayoutInflater().inflate
(R.layout.message_list_item, parent, false);
rowView = convertView;
TextView comment2 = (TextView) rowView
.findViewById(R.id.messaging_username);
comment2.setText(items.get(position).Username);
ImageView comment3 = (ImageView) rowView
.findViewById(R.id.messaging_photo);
if (items.get(position).Image == null) {
comment3.setImageResource(R.drawable.ic_launcher);
}
TextView comment4 = (TextView) rowView
.findViewById(R.id.messaging_date);
comment4.setText(items.get(position).DateTimeStamp.toString());
TextView comment5 = (TextView) rowView
.findViewById(R.id.messaging_string);
comment5.setText(items.get(position).MessageString);
}
return convertView;
}
}
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<EditText
android:id="@+id/to_newmsg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TO" />
<EditText
android:id="@+id/messge_msg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/to_newmsg"
android:text="MESSAGE" />
<Button
android:id="@+id/button_post"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/messge_msg"
android:text="Send" />
</RelativeLayout>
Yo
final ActivityAdapter itemAdapter = new ActivityAdapter(getApplicationContext(), this.MessageFeedData());
final ListView listView = (ListView) this.findViewById(R.id.messagingListView);
items = this.MessageFeedData());
final ActivityAdapter itemAdapter = new ActivityAdapter(getApplicationContext(), items);