app第二阶段冲刺第三天
作者:@kuaiquxie
作者的github:https://github.com/bitebita
本文为作者原创,如需转载,请注明出处:https://www.cnblogs.com/dzwj/p/16219740.html
今天写信息页面的活动文件,主要就是对数据的处理,以及设置监听事件等等
package com.linlang.grasharepro.activity; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.EditText; import android.widget.ImageView; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.TextView; import android.widget.Toast; import com.linlang.grasharepro.R; import com.linlang.grasharepro.adapter.ChatAdapter; import com.linlang.grasharepro.dao.NewMessageDB; import com.linlang.grasharepro.model.NewMessageDomain; import com.linlang.grasharepro.model.ShareCoenten; import com.linlang.grasharepro.utils.ListViewUitls; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; public class MessageActivity extends Activity { private ListView msgListView; private ImageView iv_sendMessage,iv_back; private EditText et_msg; private TextView tv_userName; private ArrayList<NewMessageDomain> share_list = new ArrayList<NewMessageDomain>(); private NewMessageDB newMessageDB; private ShareCoenten info = null; ChatAdapter ad; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_message); // 获取从列表当中传递过来的数据 Intent intent = getIntent(); Bundle bund = intent.getExtras(); info = (ShareCoenten) bund.getSerializable("shareContent"); //后退按钮 iv_back = (ImageView) findViewById(R.id.iv_back); iv_back.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { MessageActivity.this.finish(); } }); initView(); } private void initView() { tv_userName = (TextView) findViewById(R.id.tv_userName); tv_userName.setText(info.getUserName()); et_msg = (EditText) findViewById(R.id.et_msg); //获取用户登陆信息 SharedPreferences preferences = getSharedPreferences("userInfo", Activity.MODE_PRIVATE); String account = preferences.getString("account", ""); newMessageDB = new NewMessageDB(this); newMessageDB.open(); share_list = newMessageDB.getMyprivateLetter(account, info.getUserName()); msgListView = (ListView) findViewById(R.id.message_list); ad = new ChatAdapter(share_list, this); msgListView.setAdapter(ad); ListViewUitls.setListViewHeightBasedOnChildren(msgListView); //发送按钮 iv_sendMessage = (ImageView) findViewById(R.id.iv_sendMessage); iv_sendMessage.setOnClickListener(new MyOnClickListener()); } /** * 控件的监听事件 */ private class MyOnClickListener implements View.OnClickListener { private int index = 0; @Override public void onClick(View v) { leaveMessage(); //获取用户登陆信息 SharedPreferences preferences = getSharedPreferences("userInfo", Activity.MODE_PRIVATE); String account = preferences.getString("account", ""); share_list.clear(); share_list.addAll(newMessageDB.getMyprivateLetter(account, info.getUserName())); ad.setList(share_list); ad.notifyDataSetChanged(); } } /** * 私信 */ public void leaveMessage() { //获取用户登陆信息 SharedPreferences preferences = getSharedPreferences("userInfo", Activity.MODE_PRIVATE); String account = preferences.getString("account", ""); String dateStr = ""; try { Date date = new Date(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); dateStr = simpleDateFormat.format(date); } catch (Exception e) { } // //新增新消息表 NewMessageDomain newMessageDomain = new NewMessageDomain(); newMessageDomain.setType("1"); newMessageDomain.setTime(dateStr); newMessageDomain.setFromUser(account); newMessageDomain.setToUser(info.getUserName()); newMessageDomain.setContent(et_msg.getText().toString()); newMessageDB = new NewMessageDB(this); newMessageDB.open(); newMessageDB.insertNewMessage(newMessageDomain); et_msg.setText(""); } }
这个文件实现的是点击用户信息区进入个人详细信息页,具体不在这里详细介绍,大家自己看代码。
package com.linlang.grasharepro.activity; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Bitmap; import android.os.Bundle; import android.text.method.ScrollingMovementMethod; import android.view.View; import android.view.Window; import android.widget.AdapterView; import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import com.linlang.grasharepro.R; import com.linlang.grasharepro.adapter.BiYeShareMessageAdapter; import com.linlang.grasharepro.dao.CollectionDB; import com.linlang.grasharepro.dao.NewMessageDB; import com.linlang.grasharepro.dao.ShareMessageDB; import com.linlang.grasharepro.model.CollectionDomain; import com.linlang.grasharepro.model.NewMessageDomain; import com.linlang.grasharepro.model.ShareCoenten; import com.linlang.grasharepro.model.ShareMessage; import com.linlang.grasharepro.utils.FileUtiles; import com.linlang.grasharepro.utils.ListViewUitls; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.List; public class ShareDetailsActivity extends Activity { private ShareCoenten info = null; private TextView userName, time, profe, title, content; private ImageView head, type,iv_collect; //留言List private List<ShareMessage> message_list = new ArrayList<ShareMessage>(); private ListView messageList; private ShareMessageDB shareMessageDB; private NewMessageDB newMessageDB; private CollectionDB collectionDB; BiYeShareMessageAdapter shareAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_share_details); // 获取从列表当中传递过来的数据 Intent intent = getIntent(); Bundle bund = intent.getExtras(); info = (ShareCoenten) bund.getSerializable("shareContent"); initView(); initShareMessage(); } /** * 初始化分享信息 */ public void initShareMessage() { shareMessageDB = new ShareMessageDB(this); shareMessageDB.open(); message_list = shareMessageDB.queryByShareCoentenId(info.get_id()); this.messageList = (ListView) this.findViewById(R.id.detail_messageList); shareAdapter = new BiYeShareMessageAdapter(message_list, this); messageList.setAdapter(shareAdapter); ListViewUitls.setListViewHeightBasedOnChildren(messageList); //设置单击事件 messageList.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(ShareDetailsActivity.this, message_list.get(position).toString(), Toast.LENGTH_LONG).show(); } }); } /** * 点击用户信息区进入个人详细信息页 * * @param view */ public void userDetail(View view) { Bundle bundle = new Bundle(); bundle.putSerializable("shareContent", info); Intent intent = new Intent(ShareDetailsActivity.this, UserInfoActivity.class); intent.putExtras(bundle); startActivity(intent); } /** * 点击留言发送按钮 */ public void leaveWord(String inputName) { //获取用户登陆信息 SharedPreferences preferences = getSharedPreferences("userInfo", Activity.MODE_PRIVATE); String account = preferences.getString("account", ""); String type = preferences.getString("type", ""); String major = preferences.getString("major", ""); String headUrl = preferences.getString("headUrl", ""); shareMessageDB = new ShareMessageDB(this); shareMessageDB.open(); ShareMessage shareMessage = new ShareMessage(); shareMessage.setUserName(account); shareMessage.setShareCoentenId(info.get_id()); shareMessage.setContent(inputName); shareMessage.setType(type); shareMessage.setHeadUrl(headUrl); String dateStr = ""; try { Date date = new Date(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); dateStr = simpleDateFormat.format(date); shareMessage.setTime(dateStr); } catch (Exception e) { } //新增留言表 int strid = shareMessageDB.insertShareMessage(shareMessage); //新增新消息表 NewMessageDomain newMessageDomain = new NewMessageDomain(); newMessageDomain.setType("2"); newMessageDomain.setTime(dateStr); newMessageDomain.setFromUser(account); newMessageDomain.setToUser(info.getUserName()); newMessageDomain.setContent(inputName); newMessageDB = new NewMessageDB(this); newMessageDB.open(); newMessageDB.insertNewMessage(newMessageDomain); } private void initView() { userName = (TextView) findViewById(R.id.detail_user); type = (ImageView) findViewById(R.id.detail_type); profe = (TextView) findViewById(R.id.detail_profe); time = (TextView) findViewById(R.id.detail_time); head = (ImageView) findViewById(R.id.detail_head); title = (TextView) findViewById(R.id.detail_titile); content = (TextView) findViewById(R.id.detail_content); LinearLayout liuyan = (LinearLayout)findViewById( R.id.details_liuyan); iv_collect = (ImageView) findViewById(R.id.iv_collect); userName.setText(info.getUserName()); profe.setText(info.getMajor()); time.setText(info.getTime()); title.setText(info.getTitle()); content.setText(info.getContent()); Bitmap bitmap = FileUtiles.getSmallBitmap(info.getHeadUrl()); head.setImageBitmap(bitmap); if (info.getType().equals("在校生")){ type.setImageResource(R.drawable.inschool); } else{ type.setImageResource(R.drawable.outschool); } content.setOnClickListener(new MyOnClickListener(0)); liuyan.setOnClickListener(new MyOnClickListener(1)); iv_collect.setOnClickListener(new MyOnClickListener(2)); //内容太多可滚动查看 content.setMovementMethod(ScrollingMovementMethod.getInstance()); } /** * 控件的监听事件 */ private class MyOnClickListener implements View.OnClickListener { private int index = 0; public MyOnClickListener(int i) { index = i; } @Override public void onClick(View v) { if(index == 0){ Bundle bundle = new Bundle(); bundle.putSerializable("shareContent", info); Intent intent = new Intent(ShareDetailsActivity.this,MingPian.class); intent.putExtras(bundle); startActivity(intent); }else if(index == 1){ inputTitleDialog(); }else if(index == 2){ collect(); } } } //收藏 private void collect(){ //获取用户登陆信息 SharedPreferences preferences = getSharedPreferences("userInfo", Activity.MODE_PRIVATE); String account = preferences.getString("account", ""); String dateStr = ""; try { Date date = new Date(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); dateStr = simpleDateFormat.format(date); } catch (Exception e) { } collectionDB = new CollectionDB(this); collectionDB.open(); CollectionDomain collection = new CollectionDomain(); collection.setRelationId(info.get_id()); collection.setUserName(account); collection.setTime(dateStr); collectionDB.insertCollection(collection); } //弹出留言框 private void inputTitleDialog() { final EditText inputServer = new EditText(this); inputServer.setFocusable(true); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("留言").setIcon( R.drawable.icon).setView(inputServer).setNegativeButton("取消", null); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { String inputName = inputServer.getText().toString(); leaveWord(inputName); shareMessageDB = new ShareMessageDB(ShareDetailsActivity.this); shareMessageDB.open(); message_list.clear(); message_list.addAll(shareMessageDB.queryByShareCoentenId(info.get_id())); shareAdapter.setList(message_list); shareAdapter.notifyDataSetChanged(); } }); builder.show(); } }
明天继续写适配器,
为什么写这个呢,就是它起到连接ListView界面和数据,当列表里的每一项显示到页面时,都会调用Adapter的getView方法返回一个View。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理