Java ListView中LinearLayout上的事件
我试图获取Java ListView中LinearLayout上的事件,java,android,xml,android-layout,listview,Java,Android,Xml,Android Layout,Listview,我试图获取线性布局中的数据,而线性布局中的数据本身就位于列表视图中。 因此,在我的逻辑中,我在LinearLayout上放置了一个id,并添加了一个OnToucheListener。 但当我运行应用程序时,应用程序意外退出 我想获取线性布局中的文本视图,以便在警报对话框中更改数据 我在AsyncTask的onPostExecute()中使用SimpleAdapter实现了我的ListView,因此直到现在,一切都正常,但我不知道如何获取linearLayout的元素(textview)谁是我的L
线性布局中的数据,而线性布局中的数据本身就位于列表视图中。
因此,在我的逻辑中,我在LinearLayout
上放置了一个id,并添加了一个OnToucheListener
。
但当我运行应用程序时,应用程序意外退出
我想获取线性布局中的文本视图
,以便在警报对话框中更改数据
我在AsyncTask
的onPostExecute()
中使用SimpleAdapter
实现了我的ListView
,因此直到现在,一切都正常,但我不知道如何获取linearLayout的元素(textview)谁是我的ListView
因此,我的代码是尝试使用AlertDialog获取linearLayout以允许更改数据
LayoutInflater factory = LayoutInflater.from(this);
final View alertDialogView = factory.inflate(R.layout.alert_dialog_divers, null);
LinearLayout linear = (LinearLayout) findViewById(R.id.test);
linear.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
AlertDialog.Builder adb = new AlertDialog.Builder(listview.this);
adb.setView(alertDialogView);
adb.setTitle("Divers");
adb.setIcon(android.R.drawable.ic_dialog_alert);
adb.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
EditText et = (EditText)alertDialogView.findViewById(R.id.EditText1);
}
});
adb.setNegativeButton("Annuler", null);
//on affiche la boite de dialogue
adb.show();
}
});
这是我的listView xml文件。(我喜欢红色的宠物,以便更好地看到我的线性布局在哪里)
编辑2:
public class listview extends Activity {
private ListView maListViewPerso;
ImageButton imgButton;
Boolean isConnected;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ActionBar actionBar = getActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable(Color
.parseColor("#000000")));
maListViewPerso = (ListView) findViewById(R.id.listviewperso);
isConnected = isOnline();
getData(isConnected);
//On instancie notre layout en tant que View
LayoutInflater factory = LayoutInflater.from(this);
final View alertDialogView = factory.inflate(R.layout.alert_dialog_divers, null);
LinearLayout linear = (LinearLayout) findViewById(R.id.test);
linear.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
AlertDialog.Builder adb = new AlertDialog.Builder(listview.this);
adb.setView(alertDialogView);
adb.setTitle("Divers");
adb.setIcon(android.R.drawable.ic_dialog_alert);
adb.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
EditText et = (EditText)alertDialogView.findViewById(R.id.EditText1);
}
});
adb.setNegativeButton("Annuler", null);
//on affiche la boite de dialogue
adb.show();
}
});
调用getData()时加载我的ListView。(此函数调用Asynctask并填充用SimpleAdapter填充listView的Hashmap)
编辑3:
package com.main;
import android.app.ActionBar;
import android.app.Activity;
import android.app.AlertDialog;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.AssetManager;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.util.ArrayList;
import java.util.HashMap;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.pdf.GetViewPDF;
public class listview extends Activity {
private ListView maListViewPerso;
ImageButton imgButton;
Boolean isConnected;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ActionBar actionBar = getActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable(Color
.parseColor("#000000")));
maListViewPerso = (ListView) findViewById(R.id.listviewperso);
isConnected = isOnline();
getData(isConnected);
setdivers();
}
public void setdivers(){
//On instancie notre layout en tant que View
LayoutInflater factory = LayoutInflater.from(this);
final View alertDialogView = factory.inflate(R.layout.alert_dialog_divers, null);
LinearLayout layout = (LinearLayout) findViewById(R.id.test);
layout.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
AlertDialog.Builder adb = new AlertDialog.Builder(listview.this);
adb.setView(alertDialogView);
adb.setTitle("Divers");
adb.setIcon(android.R.drawable.ic_dialog_alert);
adb.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
EditText et = (EditText)alertDialogView.findViewById(R.id.EditText1);
}
});
adb.setNegativeButton("Annuler", null);
//on affiche la boite de dialogue
adb.show();
}
});
}
public boolean isOnline() {
ConnectivityManager cm =
(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnectedOrConnecting()) {
return true;
}
return false;
}
@Override
public void onBackPressed() {
Toast.makeText(this,"Action Désactivée", Toast.LENGTH_LONG).show();
// getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
// getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
}
public void GoToPDF(){
Intent intent = new Intent(this, GetViewPDF.class);
startActivity(intent);
}
public void getData(Boolean isConnected){
if(isConnected){
asyncTask asynchrone_task_tournee = new asyncTask(listview.this, maListViewPerso);
asynchrone_task_tournee.execute();
}else{
//J'initialise toutes les variables
JSONArray jArray = null;
JSONObject json_data=null;
HashMap<String, String> map;
ArrayList<HashMap<String, String>> listItem = new ArrayList<HashMap<String, String>>();
InputStream is = null;
Writer writer = new StringWriter();
char[] buffer = new char[1024];
//je récupère le fichier .txt de donner JSON dans le repertoir asset
AssetManager am = listview.this.getAssets();
try {
is = am.open("donnees_tourne.txt");
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
//Je lis le fichier .txt
try {
Reader reader = null;
int n;
try {
reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
while ((n = reader.read(buffer)) != -1)
{
writer.write(buffer, 0, n);
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
//recuperation des donnees json dans jsonString
String jsonString = writer.toString();
Log.i("JSON_NOT_connected",jsonString);
//traitement du json dans le tableau json JSONArray
try {
jArray = new JSONArray(jsonString);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//Insertion des données json dans un Hashmap
for(int i=0;i < jArray.length();i++)
{
try {
json_data = jArray.getJSONObject(i);
map = new HashMap<String, String>();
map.put("collector_id", json_data.getString("collector_id"));
map.put("adress", json_data.getString("adress"));
map.put("product_code", json_data.getString("product_code"));
map.put("begin_hour", json_data.getString("begin_hour"));
map.put("end_hour", json_data.getString("end_hour"));
map.put("order", json_data.getString("order"));
map.put("downtime", json_data.getString("downtime"));
map.put("fax", json_data.getString("fax"));
map.put("tel", json_data.getString("tel"));
map.put("miscellaneous", json_data.getString("miscellaneous"));
map.put("infos", json_data.getString("infos"));
listItem.add(map);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
SimpleAdapter mSchedule = new SimpleAdapter (listview.this, listItem, R.layout.list_type_tournee,
//noms donnés en clé dans le Hashmap
new String[] {"collector_id", "adress","product_code","begin_hour",
"end_hour","order","downtime","fax",
"tel","miscellaneous","infos"},
//variables textview dans la list_type_tournee.xml
new int[] {R.id.collector_id, R.id.adress,R.id.product_code,R.id.begin_hour,
R.id.end_hour,R.id.order,R.id.downtime,R.id.fax,
R.id.tel,R.id.miscellaneous,R.id.infos});
maListViewPerso.setAdapter(mSchedule);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.point_menu, menu);
menu.getItem(0).setTitle(UtilClass.stringNow());
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_now:
return true;
case R.id.menu_login:
Intent activiteU = new Intent(listview.this, LoginActivity.class);
startActivity(activiteU);
return true;
case R.id.menu_tour_inf:
Intent activiteT = new Intent(listview.this, TourActivity.class);
activiteT.putExtra("userid", 10);
startActivity(activiteT);
return true;
case R.id.menu_point_list:
return true;
default:
return super.onOptionsItemSelected(item);
}
}
package.com.main;
导入android.app.ActionBar;
导入android.app.Activity;
导入android.app.AlertDialog;
导入android.net.ConnectivityManager;
导入android.net.NetworkInfo;
导入android.os.Bundle;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.Menu;
导入android.view.MenuInflater;
导入android.view.MenuItem;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.view.view.OnTouchListener;
导入android.content.Context;
导入android.content.DialogInterface;
导入android.content.Intent;
导入android.content.res.AssetManager;
导入android.graphics.Color;
导入android.graphics.drawable.ColorDrawable;
导入android.widget.AdapterView;
导入android.widget.EditText;
导入android.widget.ImageButton;
导入android.widget.LinearLayout;
导入android.widget.ListView;
导入android.widget.simpledapter;
导入android.widget.Toast;
导入android.widget.AdapterView.OnItemClickListener;
导入java.io.BufferedReader;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.io.Reader;
导入java.io.StringWriter;
导入java.io.UnsupportedEncodingException;
导入java.io.Writer;
导入java.util.ArrayList;
导入java.util.HashMap;
导入org.json.JSONArray;
导入org.json.JSONException;
导入org.json.JSONObject;
导入com.pdf.GetViewPDF;
公共类listview扩展活动{
私有ListView maListViewPerso;
图像按钮imgButton;
布尔不连通;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ActionBar ActionBar=getActionBar();
actionBar.setBackgroundDrawable(新颜色Drawable(颜色
.parseColor(“#000000”);
maListViewPerso=(ListView)findViewById(R.id.listviewperso);
isConnected=isOnline();
getData(未连接);
设置潜水员();
}
公共场所{
//关于instancie notre布局工程视图
LayoutFlater工厂=LayoutFlater.from(此);
最终视图alertDialogView=工厂充气(R.layout.alert\u dialog\u潜水员,空);
LinearLayout布局=(LinearLayout)findViewById(R.id.test);
layout.setOnClickListener(新视图.OnClickListener()
{
公共void onClick(视图v)
{
AlertDialog.Builder adb=新建AlertDialog.Builder(listview.this);
adb.setView(alertDialogView);
adb.setTitle(“潜水员”);
adb.setIcon(android.R.drawable.ic_对话框_警报);
adb.setPositiveButton(“确定”,新的DialogInterface.OnClickListener(){
public void onClick(对话框接口对话框,int whichButton){
EditText et=(EditText)alertDialogView.findViewById(R.id.EditText1);
}
});
adb.setNegativeButton(“环空器”,空);
//论对话的形式
adb.show();
}
});
}
公共布尔isOnline(){
连接管理器cm=
(ConnectionManager)getSystemService(Context.CONNECTIVITY_服务);
NetworkInfo netInfo=cm.getActiveNetworkInfo();
如果(netInfo!=null&&netInfo.isConnectedOrConnecting()){
返回true;
}
返回false;
}
@凌驾
public void onBackPressed(){
Toast.makeText(这个“Action Désactivée”,Toast.LENGTH_LONG.show();
//getWindow();
//getWindow().getDecorView().SetSystemMivibility(视图、系统、用户界面、标志、隐藏、导航);
}
公共无效GoToPDF(){
Intent Intent=新的Intent(这个,GetViewPDF.class);
星触觉(意向);
}
public void getData(布尔值未连接){
如果(未连接){
asyncTask asynchrone\u task\u tournee=新的asyncTask(listview.this,maListViewPerso);
asynchrone_task_tournee.execute();
}否则{
//J’initialise表示变量
JSONArray-jArray=null;
JSONObject json_data=null;
HashMap图;
ArrayList listItem=新的ArrayList();
InputStream=null;
Writer-Writer=新的StringWriter();
char[]buffer=新字符[1024];
//je récupère le fichier.txt de donner JSON dans le repertoir asset
AssetManager am=listview.this.getAssets();
试一试{
is=am.open(“donnees_tourne.txt”);
}捕获(IOE1异常){
//TODO自动生成的捕捉块
e1.printStackTrace();
}
//jelislefichier.txt
试一试{
Reader=null;
int n;
试一试{
reader=新的BufferedReader(新的InputStreamReader(即“UTF-8”);
while((n=读卡器读取(缓冲区))!=-1)
{
public class listview extends Activity {
private ListView maListViewPerso;
ImageButton imgButton;
Boolean isConnected;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ActionBar actionBar = getActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable(Color
.parseColor("#000000")));
maListViewPerso = (ListView) findViewById(R.id.listviewperso);
isConnected = isOnline();
getData(isConnected);
//On instancie notre layout en tant que View
LayoutInflater factory = LayoutInflater.from(this);
final View alertDialogView = factory.inflate(R.layout.alert_dialog_divers, null);
LinearLayout linear = (LinearLayout) findViewById(R.id.test);
linear.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
AlertDialog.Builder adb = new AlertDialog.Builder(listview.this);
adb.setView(alertDialogView);
adb.setTitle("Divers");
adb.setIcon(android.R.drawable.ic_dialog_alert);
adb.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
EditText et = (EditText)alertDialogView.findViewById(R.id.EditText1);
}
});
adb.setNegativeButton("Annuler", null);
//on affiche la boite de dialogue
adb.show();
}
});
package com.main;
import android.app.ActionBar;
import android.app.Activity;
import android.app.AlertDialog;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.AssetManager;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.util.ArrayList;
import java.util.HashMap;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.pdf.GetViewPDF;
public class listview extends Activity {
private ListView maListViewPerso;
ImageButton imgButton;
Boolean isConnected;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ActionBar actionBar = getActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable(Color
.parseColor("#000000")));
maListViewPerso = (ListView) findViewById(R.id.listviewperso);
isConnected = isOnline();
getData(isConnected);
setdivers();
}
public void setdivers(){
//On instancie notre layout en tant que View
LayoutInflater factory = LayoutInflater.from(this);
final View alertDialogView = factory.inflate(R.layout.alert_dialog_divers, null);
LinearLayout layout = (LinearLayout) findViewById(R.id.test);
layout.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
AlertDialog.Builder adb = new AlertDialog.Builder(listview.this);
adb.setView(alertDialogView);
adb.setTitle("Divers");
adb.setIcon(android.R.drawable.ic_dialog_alert);
adb.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
EditText et = (EditText)alertDialogView.findViewById(R.id.EditText1);
}
});
adb.setNegativeButton("Annuler", null);
//on affiche la boite de dialogue
adb.show();
}
});
}
public boolean isOnline() {
ConnectivityManager cm =
(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnectedOrConnecting()) {
return true;
}
return false;
}
@Override
public void onBackPressed() {
Toast.makeText(this,"Action Désactivée", Toast.LENGTH_LONG).show();
// getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
// getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
}
public void GoToPDF(){
Intent intent = new Intent(this, GetViewPDF.class);
startActivity(intent);
}
public void getData(Boolean isConnected){
if(isConnected){
asyncTask asynchrone_task_tournee = new asyncTask(listview.this, maListViewPerso);
asynchrone_task_tournee.execute();
}else{
//J'initialise toutes les variables
JSONArray jArray = null;
JSONObject json_data=null;
HashMap<String, String> map;
ArrayList<HashMap<String, String>> listItem = new ArrayList<HashMap<String, String>>();
InputStream is = null;
Writer writer = new StringWriter();
char[] buffer = new char[1024];
//je récupère le fichier .txt de donner JSON dans le repertoir asset
AssetManager am = listview.this.getAssets();
try {
is = am.open("donnees_tourne.txt");
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
//Je lis le fichier .txt
try {
Reader reader = null;
int n;
try {
reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
while ((n = reader.read(buffer)) != -1)
{
writer.write(buffer, 0, n);
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
//recuperation des donnees json dans jsonString
String jsonString = writer.toString();
Log.i("JSON_NOT_connected",jsonString);
//traitement du json dans le tableau json JSONArray
try {
jArray = new JSONArray(jsonString);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//Insertion des données json dans un Hashmap
for(int i=0;i < jArray.length();i++)
{
try {
json_data = jArray.getJSONObject(i);
map = new HashMap<String, String>();
map.put("collector_id", json_data.getString("collector_id"));
map.put("adress", json_data.getString("adress"));
map.put("product_code", json_data.getString("product_code"));
map.put("begin_hour", json_data.getString("begin_hour"));
map.put("end_hour", json_data.getString("end_hour"));
map.put("order", json_data.getString("order"));
map.put("downtime", json_data.getString("downtime"));
map.put("fax", json_data.getString("fax"));
map.put("tel", json_data.getString("tel"));
map.put("miscellaneous", json_data.getString("miscellaneous"));
map.put("infos", json_data.getString("infos"));
listItem.add(map);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
SimpleAdapter mSchedule = new SimpleAdapter (listview.this, listItem, R.layout.list_type_tournee,
//noms donnés en clé dans le Hashmap
new String[] {"collector_id", "adress","product_code","begin_hour",
"end_hour","order","downtime","fax",
"tel","miscellaneous","infos"},
//variables textview dans la list_type_tournee.xml
new int[] {R.id.collector_id, R.id.adress,R.id.product_code,R.id.begin_hour,
R.id.end_hour,R.id.order,R.id.downtime,R.id.fax,
R.id.tel,R.id.miscellaneous,R.id.infos});
maListViewPerso.setAdapter(mSchedule);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.point_menu, menu);
menu.getItem(0).setTitle(UtilClass.stringNow());
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_now:
return true;
case R.id.menu_login:
Intent activiteU = new Intent(listview.this, LoginActivity.class);
startActivity(activiteU);
return true;
case R.id.menu_tour_inf:
Intent activiteT = new Intent(listview.this, TourActivity.class);
activiteT.putExtra("userid", 10);
startActivity(activiteT);
return true;
case R.id.menu_point_list:
return true;
default:
return super.onOptionsItemSelected(item);
}
}
LinearLayout linear = (LinearLayout) findViewById(R.id.test);