从mysql数据库到新活动的putExtra无法运行Android
我对这个代码有问题 此活动(收藏夹)有一个包含许多项的listView,每个项都有一个从sqlite数据库加载的textview 所有项目都可以单击,当您单击一个项目时,它会将该项目中的textView与mysql数据库进行比较 如果mysql数据库具有该值,我将其和其他数据库值发送到一个新活动(标题、文本和图像) 但问题是,当您单击一个项目时,新活动将启动,但它不会发送所有额外值(只有标题通过)。但是,当您使用箭头返回并再次单击同一项目时,它将获得新活动的值 我怎样才能解决这个问题?我是否可以先从mysql数据库加载数据,并在准备好后启动新活动?有什么想法吗?如果有,请用一些代码示例进行解释 Favorite.java从mysql数据库到新活动的putExtra无法运行Android,android,mysql,database,sqlite,Android,Mysql,Database,Sqlite,我对这个代码有问题 此活动(收藏夹)有一个包含许多项的listView,每个项都有一个从sqlite数据库加载的textview 所有项目都可以单击,当您单击一个项目时,它会将该项目中的textView与mysql数据库进行比较 如果mysql数据库具有该值,我将其和其他数据库值发送到一个新活动(标题、文本和图像) 但问题是,当您单击一个项目时,新活动将启动,但它不会发送所有额外值(只有标题通过)。但是,当您使用箭头返回并再次单击同一项目时,它将获得新活动的值 我怎样才能解决这个问题?我是否可以
public class Favorite extends ActionBarActivity {
private FavoriteListAdapter adapter;
public final static String EXTRA_TEXT = "xxx.xxx.xxx.TEXT";
public final static String EXTRA_TITLE = "xxx.xxx.xxx.TITLE";
public final static String EXTRA_IMAGE = "xxx.xxx.xxx.IMAGE";
public String db_image;
String listTitle;
MySQLiteHelper db;
ListView favoriteListView;
TextView title;
TextView text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.favorite);
text = (TextView) findViewById(R.id.text);
title = (TextView) findViewById(R.id.title);
text.setVisibility(View.INVISIBLE);
title.setVisibility(View.INVISIBLE);
setupListViewAdapter();
favoriteListView
.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> av, View arg1,
int index, long arg3) {
new task().execute();
listTitle = av.getItemAtPosition(index).toString();
title.setText(listTitle);
Intent toNewActivity = new Intent(Favorite.this,
NewActivity.class);
TextView textView = (TextView) findViewById(R.id.text);
String text = textView.getText().toString();
toNewActivity.putExtra(EXTRA_TEXT, text);
TextView titleView = (TextView) findViewById(R.id.title);
String title = titleView.getText()
.toString();
toNewActivity.putExtra(EXTRA_TITLE, title);
toNewActivity.putExtra(EXTRA_IMAGE, db_image);
startActivity(toNewActivity);
}
});
}
private void setupListViewAdapter() {
db = new MySQLiteHelper(this);
adapter = new FavoriteListAdapter(Favorite.this, R.layout.list_view,
db.getAllXXX());
favoriteListView = (ListView) findViewById(R.id.favorite_list);
favoriteListView.setAdapter(adapter);
}
class task extends AsyncTask<String, String, Void> {
private ProgressDialog progressDialog = new ProgressDialog(
Favorite.this);
InputStream is = null;
String result = "";
protected void onPreExecute() {
progressDialog.setMessage("Loading...");
progressDialog.show();
progressDialog.setOnCancelListener(new OnCancelListener() {
@Override
public void onCancel(DialogInterface arg0) {
task.this.cancel(true);
}
});
}
@Override
protected Void doInBackground(String... params) {
String url_select = "http://xxx.xxx/db.php";
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url_select);
ArrayList<NameValuePair> param = new ArrayList<NameValuePair>();
try {
httpPost.setEntity(new UrlEncodedFormEntity(param));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
} catch (Exception e) {
Log.e("log_tag", "Error in http connection " + e.toString());
}
try {
BufferedReader br = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = "";
while ((line = br.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result = sb.toString();
} catch (Exception e) {
Log.e("log_tag", "Error converting result " + e.toString());
}
return null;
}
protected void onPostExecute(Void v) {
try {
JSONArray Jarray = new JSONArray(result);
for (int i = 0; i < Jarray.length(); i++) {
JSONObject Jasonobject = null;
// text_1 = (TextView)findViewById(R.id.txt1);
Jasonobject = Jarray.getJSONObject(i);
String db_text = "";
if (title.getText().toString()
.equalsIgnoreCase(Jasonobject.getString("title"))) {
db_text = Jasonobject.getString("text");
text.setText(db_text);
db_image = Jasonobject.getString("image");
title.setVisibility(View.INVISIBLE);
break;
}
}
this.progressDialog.dismiss();
} catch (Exception e) {
// TODO: handle exception
Log.e("log_tag", "Error parsing data " + e.toString());
}
}
}
公共类收藏夹扩展了ActionBarActivity{
私有收藏夹列表适配器;
公共最终静态字符串EXTRA_TEXT=“xxx.xxx.xxx.TEXT”;
公共最终静态字符串EXTRA_TITLE=“xxx.xxx.xxx.TITLE”;
公共最终静态字符串EXTRA_IMAGE=“xxx.xxx.xxx.IMAGE”;
公共字符串db_图像;
字符串列表标题;
MySQLiteHelper数据库;
ListView收藏夹ListView;
文本视图标题;
文本查看文本;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.favorite);
text=(TextView)findViewById(R.id.text);
title=(TextView)findViewById(R.id.title);
text.setVisibility(View.INVISIBLE);
标题.设置可见性(视图.不可见);
setupListViewAdapter();
收藏夹列表视图
.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共链接(AdapterView av,视图arg1,
整数索引,长arg3){
新任务().execute();
listTitle=av.getItemAtPosition(index.toString();
title.setText(listTitle);
Intent toNewActivity=新的Intent(Favorite.this,
新活动(课堂);
TextView TextView=(TextView)findViewById(R.id.text);
String text=textView.getText().toString();
音调活动。putExtra(额外文本,文本);
TextView titleView=(TextView)findViewById(R.id.title);
String title=titleView.getText()
.toString();
音调活动。putExtra(额外标题,标题);
色调活动。putExtra(额外图像,分贝图像);
起始触觉(音调活动);
}
});
}
私有void setupListViewAdapter(){
db=新的MySQLiteHelper(此);
adapter=新的FavoriteListAdapter(Favorite.this,R.layout.list\u视图,
db.getAllXXX());
favoriteListView=(ListView)findViewById(R.id.favorite\u列表);
setAdapter(适配器);
}
类任务扩展了异步任务{
private ProgressDialog ProgressDialog=新建ProgressDialog(
最喜欢的。这个);
InputStream=null;
字符串结果=”;
受保护的void onPreExecute(){
progressDialog.setMessage(“加载…”);
progressDialog.show();
progressDialog.setOnCancelListener(新的OnCancelListener(){
@凌驾
public void onCancel(对话框接口arg0){
task.this.cancel(true);
}
});
}
@凌驾
受保护的Void doInBackground(字符串…参数){
字符串url_select=”http://xxx.xxx/db.php";
HttpClient HttpClient=新的DefaultHttpClient();
HttpPost HttpPost=新的HttpPost(url\u选择);
ArrayList param=新的ArrayList();
试一试{
setEntity(新的UrlEncodedFormEntity(参数));
HttpResponse HttpResponse=httpClient.execute(httpPost);
HttpEntity HttpEntity=httpResponse.getEntity();
is=httpEntity.getContent();
}捕获(例外e){
e(“Log_标记”,“http连接错误”+e.toString());
}
试一试{
BufferedReader br=新的BufferedReader(新的InputStreamReader(
is,“iso-8859-1”),8);
StringBuilder sb=新的StringBuilder();
字符串行=”;
而((line=br.readLine())!=null){
sb.追加(第+行“\n”);
}
is.close();
结果=sb.toString();
}捕获(例外e){
Log.e(“Log_标记”,“错误转换结果”+e.toString());
}
返回null;
}
受保护的void onPostExecute(void v){
试一试{
JSONArray Jarray=新JSONArray(结果);
for(int i=0;i
FavoriteListAdapter.java
public class FavoriteListAdapter extends ArrayAdapter<DBLite> {
TextView title;
protected static final String LOG_TAG = FavoriteListAdapter.class
.getSimpleName();
private List<DBLite> items;
private int layoutResourceId;
private Context context;
public FavoriteListAdapter(Context context, int layoutResourceId,
List<DBLite> items) {
super(context, layoutResourceId, items);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.items = items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
favoriteListHolder holder = null;
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new favoriteListHolder();
holder.favoriteList = items.get(position);
holder.title = (TextView) row.findViewById(R.id.txt);
holder.title.setTag(holder.favoriteList);
row.setTag(holder);
setupItem(holder);
return row;
}
private void setupItem(favoriteListHolder holder) {
holder.title.setText(holder.favoriteList.getTitle());
}
public static class favoriteListHolder {
DBLite favoriteList;
TextView title;
}
}
公共类FavoriteListAdapter扩展了ArrayAdapter{
文本视图标题;
受保护的静态最终字符串LOG_TAG=FavoriteListAdapter.class
.getSimpleName();
私人名单