Javascript 单击listview以在android中打开详细信息视图

Javascript 单击listview以在android中打开详细信息视图,javascript,android,xml,Javascript,Android,Xml,我有一个XML文件,它由标题、图像链接和描述组成 经验 ItemFragment.java package com.tolhedo.akew.anggra; import android.content.res.Resources; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; imp

我有一个XML文件,它由标题、图像链接和描述组成

经验

ItemFragment.java

package com.tolhedo.akew.anggra;


import android.content.res.Resources;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.TextView;

import com.tolhedo.akew.anggra.dummy.ResourcesAdapter;

public class ItemFragment extends Fragment{

    public ItemFragment() {
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_item, container, false);
        listView = (AbsListView) view.findViewById(R.id.list_item);
        textView = (TextView) view.findViewById(R.id.name);

        Resources resources = getActivity().getResources();
        ResourcesAdapter resourcesAdapter = new ResourcesAdapter(resources, view, getActivity());
        resourcesAdapter.stringResource();
        return view;
    }
}
ViewContent.java

package com.tolhedo.akew.anggra;

import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.TextView;
import android.widget.Toast;

import com.tolhedo.akew.anggra.dummy.CustomView;
import com.tolhedo.akew.anggra.dummy.FullView;
import com.tolhedo.akew.anggra.dummy.ParsedDataSet;
import com.tolhedo.akew.anggra.dummy.XmlContentHandler;

import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

public class ViewContent extends Fragment{
    private TextView textView;
    private AbsListView listView;
    private ArrayList<ParsedDataSet> itemList;
    private ProgressDialog pDialog;
    private XmlContentHandler xmlContentHandler;
    private String url = "http://oscom.meximas.com/imagelistview.xml";

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.content_view, container, false);
        textView = (TextView) view.findViewById(R.id.content);
        listView = (AbsListView) view.findViewById(R.id.listView1);

        doParsing(view);

        itemList = new ArrayList<>();

        setListViewClick(listView);

        return view;
    }

    public void doParsing(View view){
        if (isNetworkAvailable()){
            textView.setText("Loading...");
            new AsyncData().execute(url);
        }
        else
        {
            showToast("No Network Connection!!!");
        }
    }

    private void showToast(String msg) {
        Toast.makeText(getActivity(), msg, Toast.LENGTH_SHORT).show();
    }

    private boolean isNetworkAvailable() {
        ConnectivityManager connectivity = (ConnectivityManager) getActivity().getSystemService(getActivity().CONNECTIVITY_SERVICE);
        if (connectivity == null)
        {
            return false;
        }
        else
        {
            NetworkInfo[] info = connectivity.getAllNetworkInfo();
            if (info != null)
            {
                for (int i = 0; i < info.length; i++)
                {
                    if (info[i].getState() == NetworkInfo.State.CONNECTED)
                    {
                        return true;
                    }
                }
            }
        }
        return false;
    }

    private class AsyncData extends AsyncTask<String, Void, Void> {
        @Override
        protected void onPreExecute()
        {
            pDialog = new ProgressDialog(getActivity());
            pDialog.setTitle("Loading....");
            pDialog.setMessage("Please wait...");
            pDialog.show();
            super.onPreExecute();
        }
        @Override
        protected Void doInBackground(String... params) {
            try
            {
                SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
                SAXParser saxParser = saxParserFactory.newSAXParser();
                XMLReader xmlReader = saxParser.getXMLReader();

                xmlContentHandler = new XmlContentHandler();
                xmlReader.setContentHandler(xmlContentHandler);

                URL _url = new URL(params[0]);

                xmlReader.parse(new InputSource(_url.openStream()));

            }
            catch (ParserConfigurationException e) {
                e.printStackTrace();
            }
            catch (MalformedURLException e) {
                e.printStackTrace();
            }
            catch (SAXException e) {
                e.printStackTrace();
            }
            catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void aVoid) {
            super.onPostExecute(aVoid);
            textView.setText("Read all epic episode of Anggra");

            if (pDialog != null && pDialog.isShowing()){
                pDialog.dismiss();
            }

            itemList = xmlContentHandler.getListItem();
            if (null != itemList && itemList.size() != 0){
                for (int index = 0; index < itemList.size(); index++){
                    ParsedDataSet parsedDataSet = itemList.get(index);
                }
            }

            itemList = xmlContentHandler.getListItem();
            listView.setAdapter(new CustomView(getActivity(),itemList));
        }
    }

    private void setListViewClick (AbsListView listView){
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                itemList = xmlContentHandler.getListItem();
                if (null != itemList && itemList.size() != 0){
                    for (int index = 0; index < itemList.size(); index++){
                        ParsedDataSet parsedDataSet = itemList.get(index);

                        textView.setText(parsedDataSet.getDesc());

                        Intent intent = new Intent(getActivity(), FullView.class);
                        startActivity(intent);
                    }
                }
            }
        });
    }

    public void loadImg(String url, ImageView img){

        try{
            URL url1 = new URL(url);
            HttpURLConnection connection = (HttpURLConnection) url1.openConnection();
            connection.setDoInput(true);
            connection.connect();

            InputStream inputStream = connection.getInputStream();
            img.setImageBitmap(BitmapFactory.decodeStream(inputStream));
            return;

        }
        catch (MalformedURLException e) {
            e.printStackTrace();
        }
        catch (IOException e) {
            e.printStackTrace();
        }
    }
}
ResourcesAdapter.java

package com.tolhedo.akew.anggra.dummy;

import android.app.Activity;
import android.content.res.Resources;
import android.view.View;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.TextView;
import android.widget.Toast;

import com.tolhedo.akew.anggra.R;

/**
 * Created by akew on 1/8/2015.
 */
public class ResourcesAdapter {
    Resources mResources;
    View mView;
    Activity mActivity;
    String[] strings;
    AbsListView mListView;
    ListAdapter mAdapter;
    TextView mTextView;


    public ResourcesAdapter(Resources resources, View view, Activity activity){
        mActivity = activity;
        mResources = resources;
        mView = view;
        mListView = (AbsListView) view.findViewById(android.R.id.list);
    }

    public void stringResource(){
        strings = mResources.getStringArray(R.array.list_title);
        mAdapter = new ArrayAdapter<>(mActivity
        , android.R.layout.simple_list_item_1
        , android.R.id.text1
        , strings);
        mListView.setAdapter(mAdapter);
        setListViewClick(mListView);
    }

    private void setListViewClick(AbsListView mListView){
        mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                mTextView = (TextView) view;
                Toast.makeText(mActivity
                , mTextView.getText()
                , Toast.LENGTH_SHORT).show();
            }
        });
    }
}
package com.tolhedo.akew.anggra.dummy;
导入android.app.Activity;
导入android.content.res.Resources;
导入android.view.view;
导入android.widget.AbsListView;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.ListAdapter;
导入android.widget.TextView;
导入android.widget.Toast;
进口公司tolhedo.akew.anggra.R;
/**
*由akew于2015年1月8日创建。
*/
公共类资源适配器{
资源;
视图视图;
活动能力;
字符串[]字符串;
AbsListView-mListView;
列表适配器mAdapter;
文本视图mTextView;
公共资源适配器(资源、视图、活动){
活动性=活动性;
mResources=资源;
mView=视图;
mListView=(AbsListView)view.findviewbyd(android.R.id.list);
}
公共资源(){
strings=mResources.getStringArray(R.array.list_title);
mAdapter=新阵列适配器(mActivity
,android.R.layout.simple\u list\u item\u 1
,android.R.id.text1
,字符串);
mListView.setAdapter(mAdapter);
setListViewClick(mListView);
}
私有void setListViewClick(AbsListView mListView){
mListView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
mTextView=(TextView)视图;
Toast.makeText(mActivity
,mTextView.getText()
,Toast.LENGTH_SHORT)show();
}
});
}
}
XmlContentHandler.java

package com.tolhedo.akew.anggra.dummy;


import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

import java.util.ArrayList;



/**
 * Created by akew on 1/14/2015.
 */
public class XmlContentHandler extends DefaultHandler {

    Boolean currentElement = false;
    String currentValue = "";
    ParsedDataSet parsedDataSet = null;

    private ArrayList<ParsedDataSet> itemList = new ArrayList<>();

    public ArrayList<ParsedDataSet> getListItem() {
        return itemList;
    }

    @Override
    public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
        currentElement = true;
        currentValue = "";
        if (localName.equals("item")){
            parsedDataSet = new ParsedDataSet();
        }
    }

    @Override
    public void endElement(String uri, String localName, String qName) throws SAXException {
        currentElement = false;

        if (localName.equals("id")){
            parsedDataSet.setId(currentValue);
        }

        else if (localName.equals("title")){
            parsedDataSet.setTitle(currentValue);
        }
        else if (localName.equals("desc")){
            parsedDataSet.setDesc(currentValue);
        }
        else if (localName.equals("pubDate")){
            parsedDataSet.setPubDate(currentValue);
        }
        else if (localName.equals("link")){
            parsedDataSet.setLink(currentValue);
        }
        else if (localName.equals("item")){
            itemList.add(parsedDataSet);
        }
    }

    @Override
    public void characters(char[] ch, int start, int length) throws SAXException {
        if (currentElement){
            currentValue = currentValue + new String(ch, start, length);
        }
    }
}
package com.tolhedo.akew.anggra.dummy;
导入org.xml.sax.Attributes;
导入org.xml.sax.SAXException;
导入org.xml.sax.helpers.DefaultHandler;
导入java.util.ArrayList;
/**
*由akew于2015年1月14日创建。
*/
公共类XmlContentHandler扩展了DefaultHandler{
布尔currentElement=false;
字符串currentValue=“”;
ParsedDataSet ParsedDataSet=null;
private ArrayList itemList=new ArrayList();
公共ArrayList getListItem(){
返回项目列表;
}
@凌驾
public void startElement(字符串uri、字符串localName、字符串qName、属性)引发SAXException{
currentElement=true;
currentValue=“”;
if(localName.equals(“项”)){
parsedDataSet=新的parsedDataSet();
}
}
@凌驾
public void endElement(字符串uri、字符串localName、字符串qName)引发SAXException{
currentElement=false;
if(localName.equals(“id”)){
parsedDataSet.setId(currentValue);
}
else if(localName.equals(“title”)){
parsedDataSet.setTitle(当前值);
}
else if(localName.equals(“desc”)){
parsedDataSet.setDesc(当前值);
}
else if(localName.equals(“pubDate”)){
parsedDataSet.setPubDate(当前值);
}
else if(localName.equals(“link”)){
parsedDataSet.setLink(当前值);
}
else if(localName.equals(“项”)){
itemList.add(parsedDataSet);
}
}
@凌驾
公共无效字符(char[]ch,int start,int length)引发异常{
if(当前元素){
currentValue=currentValue+新字符串(ch、开始、长度);
}
}
}

谢谢您的帮助

那么您的代码在哪里,您如何处理它?当点击名称时,看起来他们正在启动一个新的活动,其中包含所有非平铺信息。将ListView中的onclick事件通知您自己,然后onclick启动一个活动,然后提取详细信息。对于给您带来的不便,我深表歉意。我已经改进了我的问题,不会让你感到困惑。非常感谢你的帮助。
package com.tolhedo.akew.anggra.dummy;

import android.widget.BaseAdapter;

import java.util.ArrayList;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.tolhedo.akew.anggra.R;



public class CustomView extends BaseAdapter {
    Context mContext;
    ArrayList<ParsedDataSet> dataSets;
    LayoutInflater mInflater;
    public CustomView(Context context, ArrayList<ParsedDataSet> itemList)
    {
        mContext = context;
        dataSets = itemList;
        mInflater = LayoutInflater.from(context);
    }
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return dataSets.size();
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        ViewHolder vh;

        if(convertView == null){
            vh= new ViewHolder();
            convertView = mInflater.inflate(R.layout.custom_view, parent, false);
            vh.tv1 = (TextView) convertView.findViewById(R.id.textView1);
            vh.tv2 = (TextView) convertView.findViewById(R.id.textView2);
            vh.tv3 = (TextView) convertView.findViewById(R.id.textView3);
            vh.tv4 = (TextView) convertView.findViewById(R.id.textView4);
            vh.img = (ImageView) convertView.findViewById(R.id.imageView);
            convertView.setTag(vh);
        }
        else {
            vh = (ViewHolder) convertView.getTag();
        }

        ParsedDataSet parsedDataSet = dataSets.get(position);


        vh.tv1.setText(parsedDataSet.getTitle());
        vh.tv2.setText(parsedDataSet.getDesc());
        vh.tv3.setText(parsedDataSet.getPubDate());
        vh.tv4.setText(parsedDataSet.getLink());

        return convertView;
    }

    static class ViewHolder
    {
        TextView tv1,tv2,tv3, tv4;
        ImageView img;
    }


}
package com.tolhedo.akew.anggra.dummy;

/**
 * Created by akew on 1/14/2015.
 */
public class ParsedDataSet {
    private String id;
    private String title;
    private String desc;
    private String pubDate;
    private String link;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    public String getPubDate() {
        return pubDate;
    }

    public void setPubDate(String pubDate) {
        this.pubDate = pubDate;
    }

    public String getLink() {
        return link;
    }

    public void setLink(String link) {
        this.link = link;
    }
}
package com.tolhedo.akew.anggra.dummy;

import android.app.Activity;
import android.content.res.Resources;
import android.view.View;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.TextView;
import android.widget.Toast;

import com.tolhedo.akew.anggra.R;

/**
 * Created by akew on 1/8/2015.
 */
public class ResourcesAdapter {
    Resources mResources;
    View mView;
    Activity mActivity;
    String[] strings;
    AbsListView mListView;
    ListAdapter mAdapter;
    TextView mTextView;


    public ResourcesAdapter(Resources resources, View view, Activity activity){
        mActivity = activity;
        mResources = resources;
        mView = view;
        mListView = (AbsListView) view.findViewById(android.R.id.list);
    }

    public void stringResource(){
        strings = mResources.getStringArray(R.array.list_title);
        mAdapter = new ArrayAdapter<>(mActivity
        , android.R.layout.simple_list_item_1
        , android.R.id.text1
        , strings);
        mListView.setAdapter(mAdapter);
        setListViewClick(mListView);
    }

    private void setListViewClick(AbsListView mListView){
        mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                mTextView = (TextView) view;
                Toast.makeText(mActivity
                , mTextView.getText()
                , Toast.LENGTH_SHORT).show();
            }
        });
    }
}
package com.tolhedo.akew.anggra.dummy;


import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

import java.util.ArrayList;



/**
 * Created by akew on 1/14/2015.
 */
public class XmlContentHandler extends DefaultHandler {

    Boolean currentElement = false;
    String currentValue = "";
    ParsedDataSet parsedDataSet = null;

    private ArrayList<ParsedDataSet> itemList = new ArrayList<>();

    public ArrayList<ParsedDataSet> getListItem() {
        return itemList;
    }

    @Override
    public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
        currentElement = true;
        currentValue = "";
        if (localName.equals("item")){
            parsedDataSet = new ParsedDataSet();
        }
    }

    @Override
    public void endElement(String uri, String localName, String qName) throws SAXException {
        currentElement = false;

        if (localName.equals("id")){
            parsedDataSet.setId(currentValue);
        }

        else if (localName.equals("title")){
            parsedDataSet.setTitle(currentValue);
        }
        else if (localName.equals("desc")){
            parsedDataSet.setDesc(currentValue);
        }
        else if (localName.equals("pubDate")){
            parsedDataSet.setPubDate(currentValue);
        }
        else if (localName.equals("link")){
            parsedDataSet.setLink(currentValue);
        }
        else if (localName.equals("item")){
            itemList.add(parsedDataSet);
        }
    }

    @Override
    public void characters(char[] ch, int start, int length) throws SAXException {
        if (currentElement){
            currentValue = currentValue + new String(ch, start, length);
        }
    }
}