当我使用单击查看侦听器时,Android列表视图未显示
我想将单击侦听器添加到我的列表视图中。但当我添加click listener以启动新的意图时,列表视图消失了 我添加了list view.setonItemclicklistener,但失败 显示当我使用单击查看侦听器时,Android列表视图未显示,android,Android,我想将单击侦听器添加到我的列表视图中。但当我添加click listener以启动新的意图时,列表视图消失了 我添加了list view.setonItemclicklistener,但失败 显示 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="fi.com.cgulf" > &
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="fi.com.cgulf" >
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme" >
<activity android:name=".SplashActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".DisplayActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar"/>
<activity android:name=".DetailsActivity"
android:theme="@style/AppTheme.NoActionBar"/>
<activity android:name=".HomeActivity"
android:theme="@style/AppTheme.NoActionBar"/>
</application>
</manifest>
HomeActivity.java
package fi.com.cgulf;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.widget.ImageButton;
import android.widget.ListView;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import fi.com.cgulf.adapter.MyArrayAdapter;
import fi.com.cgulf.model.MyDataModel;
import fi.com.cgulf.parser.JSONParser;
import fi.com.cgulf.utils.InternetConnection;
import fi.com.cgulf.utils.Keys;
public class HomeActivity extends AppCompatActivity {
public ListView listView;
public ArrayList<MyDataModel> list;
public MyArrayAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
ImageButton img1= (ImageButton)findViewById(R.id.imageButton);
ImageButton img2= (ImageButton)findViewById(R.id.imageButton2);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
list = new ArrayList<>();
if (InternetConnection.checkConnection(getApplicationContext())) {
new GetDataTask().execute();
} else {
}
}
public void onClickb1(View view)
{
Intent homeIntent =new Intent(HomeActivity.this,DisplayActivity.class);
startActivity(homeIntent);
finish();
}
public void onClickb2(View view)
{
Intent homeIntent =new Intent(HomeActivity.this,DisplayActivity.class);
startActivity(homeIntent);
finish();
}
class GetDataTask extends AsyncTask<Void, Void, Void> {
ProgressDialog dialog;
int jIndex;
int x;
@Override
protected void onPreExecute() {
super.onPreExecute();
x=list.size();
if(x==0)
jIndex=0;
else
jIndex=x;
dialog = new ProgressDialog(HomeActivity.this);
dialog.setTitle("Please wait..");
dialog.setMessage("Loading Data");
dialog.show();
}
@Nullable
@Override
protected Void doInBackground(Void... params) {
/**
* Getting JSON Object from Web Using okHttp
*/
JSONObject jsonObject = JSONParser.getDataFromWeb();
try {
/**
* Check Whether Its NULL???
*/
if (jsonObject != null) {
/**
* Check Length...
*/
if(jsonObject.length() > 0) {
/**
* Getting Array named "contacts" From MAIN Json Object
*/
JSONArray array = jsonObject.getJSONArray(Keys.KEY_CONTACTS);
/**
* Check Length of Array...
*/
int lenArray = array.length();
if(lenArray > 0) {
for( ; jIndex < lenArray; jIndex++) {
/**
* Creating Every time New Object
* and
* Adding into List
*/
MyDataModel model = new MyDataModel();
/**
* Getting Inner Object from contacts array...
* and
* From that We will get Name of that Contact
*
*/
JSONObject innerObject = array.getJSONObject(jIndex);
String name = innerObject.getString(Keys.KEY_NAME);
String country = innerObject.getString(Keys.KEY_COUNTRY);
/**
* Getting Object from Object "phone"
*/
//JSONObject phoneObject = innerObject.getJSONObject(Keys.KEY_PHONE);
//String phone = phoneObject.getString(Keys.KEY_MOBILE);
model.setName(name);
model.setCountry(country);
/**
* Adding name and phone concatenation in List...
*/
list.add(model);
}
}
}
} else {
}
} catch (JSONException je) {
Log.i(JSONParser.TAG, "" + je.getLocalizedMessage());
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
dialog.dismiss();
/**
* Checking if List size if more than zero then
* Update ListView
*/
}
}
}
package fi.com.cgulf;
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.Snackbar;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import java.util.ArrayList;
import fi.com.cgulf.adapter.MyArrayAdapter;
import fi.com.cgulf.model.MyDataModel;
public class DisplayActivity extends HomeActivity {
public static ArrayList<MyDataModel> list1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list1=list;
listView = (ListView) findViewById(R.id.listView);
adapter = new MyArrayAdapter(this, list1);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
Intent intent = new Intent(DisplayActivity.this, DetailsActivity.class);
intent.putExtra("pos", position);
startActivity(intent);
finish();
}
});
}
}
包fi.com.cgulf;
导入android.app.ProgressDialog;
导入android.content.Intent;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.support.annotation.Nullable;
导入android.support.v7.app.AppActivity;
导入android.support.v7.widget.Toolbar;
导入android.util.Log;
导入android.view.view;
导入android.widget.ImageButton;
导入android.widget.ListView;
导入org.json.JSONArray;
导入org.json.JSONException;
导入org.json.JSONObject;
导入java.util.ArrayList;
导入fi.com.cgulf.adapter.MyArrayAdapter;
导入fi.com.cgulf.model.MyDataModel;
导入fi.com.cgulf.parser.JSONParser;
导入fi.com.cgulf.utils.InternetConnection;
导入fi.com.cgulf.utils.Keys;
公共类HomeActivity扩展了AppCompatActivity{
公共列表视图列表视图;
公共阵列列表;
公共MyArrayAdapter适配器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
ImageButton img1=(ImageButton)findViewById(R.id.ImageButton);
ImageButton img2=(ImageButton)findViewById(R.id.imageButton2);
Toolbar Toolbar=(Toolbar)findViewById(R.id.Toolbar);
设置支持操作栏(工具栏);
列表=新的ArrayList();
if(InternetConnection.checkConnection(getApplicationContext())){
新建GetDataTask().execute();
}否则{
}
}
公共void onClickb1(视图)
{
Intent homeentent=新的Intent(HomeActivity.this,DisplayActivity.class);
startActivity(家庭意向);
完成();
}
公共void onClickb2(视图)
{
Intent homeentent=新的Intent(HomeActivity.this,DisplayActivity.class);
startActivity(家庭意向);
完成();
}
类GetDataTask扩展了AsyncTask{
进程对话;
int jIndex;
int x;
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
x=list.size();
如果(x==0)
jIndex=0;
其他的
jIndex=x;
dialog=新建ProgressDialog(HomeActivity.this);
dialog.setTitle(“请稍候”);
setMessage(“加载数据”);
dialog.show();
}
@可空
@凌驾
受保护的Void doInBackground(Void…参数){
/**
*使用okHttp从Web获取JSON对象
*/
JSONObject JSONObject=JSONParser.getDataFromWeb();
试一试{
/**
*检查它是否为空???
*/
if(jsonObject!=null){
/**
*检查长度。。。
*/
if(jsonObject.length()>0){
/**
*从主Json对象获取名为“contacts”的数组
*/
JSONArray数组=jsonObject.getJSONArray(KEY.KEY\u联系人);
/**
*检查数组的长度。。。
*/
int lenArray=array.length();
如果(lenArray>0){
对于(;jIndex
MyArrayAdapter.java
package fi.com.cgulf.adapter;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.view.menu.MenuView;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.support.v7.widget.RecyclerView.ViewHolder;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import java.util.List;
import fi.com.cgulf.R;
import fi.com.cgulf.model.MyDataModel;
public class MyArrayAdapter extends ArrayAdapter<MyDataModel> {
List<MyDataModel> modelList;
Context context;
private LayoutInflater mInflater;
// Constructors
public MyArrayAdapter(Context context, List<MyDataModel> objects) {
super(context, 0, objects);
this.context = context;
this.mInflater = LayoutInflater.from(context);
modelList = objects;
}
@Override
public MyDataModel getItem(int position) {
return modelList.get(position);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ViewHolder vh;
if (convertView == null) {
View view = mInflater.inflate(R.layout.activitysection, parent, false);
vh = ViewHolder.create((RelativeLayout) view);
view.setTag(vh);
} else {
vh = (ViewHolder) convertView.getTag();
}
MyDataModel item = getItem(position);
vh.textViewName.setText(item.getName());
vh.textViewCountry.setText(item.getCountry());
return vh.rootView;
}
private static class ViewHolder {
public final RelativeLayout rootView;
public final TextView textViewName;
public final TextView textViewCountry;
private ViewHolder(RelativeLayout rootView, TextView textViewName, TextView textViewCountry) {
this.rootView = rootView;
this.textViewName = textViewName;
this.textViewCountry = textViewCountry;
}
public static ViewHolder create(RelativeLayout rootView) {
TextView textViewName = (TextView) rootView.findViewById(R.id.textViewName);
TextView textViewCountry = (TextView) rootView.findViewById(R.id.textViewCountry);
return new ViewHolder(rootView, textViewName, textViewCountry);
}
}
}
包fi.com.cgulf.adapter;
导入android.content.Context;
导入android.support.annotation.NonNull;
导入android.support.v7.view.menu.MenuView;
导入android.support.v7.widget.RecyclerView;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.support.v7.widget.RecyclerView.ViewHolder;
导入android.view.ViewGroup;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.ImageView;
感应电动机
// declare interface object
private CallBackListner listner;
// Constructors
public MyArrayAdapter(Context context, List<MyDataModel> objects,
CallBackListner listner) {
super(context, 0, objects);
this.context = context;
this.mInflater = LayoutInflater.from(context);
modelList = objects;
this.listner = listner;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ViewHolder vh;
if (convertView == null) {
View view = mInflater.inflate(R.layout.activitysection, parent,
false);
vh = ViewHolder.create((RelativeLayout) view);
view.setTag(vh);
} else {
vh = (ViewHolder) convertView.getTag();
}
MyDataModel item = getItem(position);
vh.textViewName.setText(item.getName());
vh.textViewCountry.setText(item.getCountry());
vh.textViewName.setOnClickListner(....
// call the interface callback
listner.onCallback(position);
}
return vh.rootView;
}
public class DisplayActivity extends HomeActivity {
public static ArrayList<MyDataModel> list1;
private CallBackListner listner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// initialize the interface here
listner = new CallBackListner({
@override
public void onCallback(int pos){
// here you get the current position of the item, do your stuff
}
})
}
public interface CallBackListner{
void onCallback(int pos);
}