Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 同时下载多个图像,并更新列表视图_Android_Listview - Fatal编程技术网

Android 同时下载多个图像,并更新列表视图

Android 同时下载多个图像,并更新列表视图,android,listview,Android,Listview,我正在用android开发一个应用程序,它将从服务器服务获取最新消息,然后显示在列表视图中。代码如下: HomeFragment.java @SuppressLint("NewApi") public class HomeFragment extends Fragment { private ListView listView; EditText search; ImageButton btn; ProgressDialog mProgressDialog;

我正在用android开发一个应用程序,它将从服务器服务获取最新消息,然后显示在列表视图中。代码如下:

HomeFragment.java

@SuppressLint("NewApi")
public class HomeFragment extends Fragment {
    private ListView listView;
    EditText search;
    ImageButton btn;
    ProgressDialog mProgressDialog;
    private NewsHomeAdapter customNewsHomeAdapter;

    Context homeFragmentContext;

    final ArrayList<NewsItem> news_home_data = new ArrayList<NewsItem>();

    // child categories JSONArray
    JSONArray newsItems = null;

    public HomeFragment(){}

    @Override
    public View onCreateView(LayoutInflater inflater, final ViewGroup container,
            Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_home, container, false);

        homeFragmentContext = container.getContext();
        listView = (ListView) rootView.findViewById(R.id.news_home_list);
        search = (EditText) rootView.findViewById(R.id.search);
        search.setOnKeyListener(new OnKeyListener() {
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if ((event.getAction() == KeyEvent.ACTION_DOWN)
                        && (keyCode == KeyEvent.KEYCODE_ENTER)) {

                    String query_text = search.getText().toString().trim();

                    try {
                        query_text = URLEncoder.encode(query_text, "utf-8");
                    } catch (UnsupportedEncodingException e) {

                    }
                    String full_query = query_text;

                    InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
                    imm.hideSoftInputFromWindow(search.getWindowToken(), 0);

                    Intent bussiness = new Intent(homeFragmentContext,
                            SearchNews.class);
                    Bundle basket_buss_category = new Bundle();

                    basket_buss_category.putString("SEARCH", full_query);
                    ;

                    bussiness.putExtras(basket_buss_category);

                    startActivity(bussiness);

                    return true;
                }
                return false;
            }


        });

        new GetNewsData().execute(TimeUtils.NEWS_HOME_URL);

        listView.setOnItemClickListener(new OnItemClickListener() {

            public void onItemClick(AdapterView<?> a, View v, int position,
                    long id) {

                Intent cluster = new Intent(homeFragmentContext, NewsCluster.class);

                Bundle newslist = new Bundle();
                newslist.putString("NLIST",news_home_data.get(position).getCluster());
                cluster.putExtras(newslist);
                startActivity(cluster);


            }

        });

        btn = (ImageButton) rootView.findViewById(R.id.search_button);
        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {

                String query_text = search.getText().toString().trim();
                if (query_text.equalsIgnoreCase("")) {

                    search.requestFocus();
                    InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
                    imm.hideSoftInputFromWindow(search.getWindowToken(), 0);
                }

                else {

                    try {
                        query_text = URLEncoder.encode(query_text, "utf-8");
                    } catch (UnsupportedEncodingException e) {
                        e.printStackTrace();
                    }
                    String full_query = query_text;

                    InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
                    imm.hideSoftInputFromWindow(search.getWindowToken(), 0);

                    Intent bussiness = new Intent(homeFragmentContext, SearchNews.class);
                    Bundle basket_buss_category = new Bundle();

                    basket_buss_category.putString("SEARCH", full_query);

                    bussiness.putExtras(basket_buss_category);

                    startActivity(bussiness);

                }

            }
        });

        return rootView;
    }

    private class GetNewsData extends
    AsyncTask<String, Void, ArrayList<NewsItem>> {

protected void onPreExecute() {
    super.onPreExecute();

    // shfaq Progress Dialogun, deri ne momentin qe te loadohen te
    // dheant
    mProgressDialog = new ProgressDialog(homeFragmentContext);
    mProgressDialog.setMessage("Loading...");
    mProgressDialog.setIndeterminate(false);
    mProgressDialog.show();
}

@Override
protected ArrayList<NewsItem> doInBackground(String... URL) {

    String categories_url = URL[0];
    // Creating JSON Parser instance
    JSONParser jParser = new JSONParser();
    // getting JSON string from URL
    newsItems = jParser.getJSONFromUrl(categories_url);
    Log.e("lsbsfbsfdbsfd", newsItems.toString());
    try {
        for (int i = 0; i < newsItems.length(); i++) {

            JSONObject c = newsItems.getJSONObject(i);

            Log.e("po fillo procesimin e ", String.valueOf(i));
            String tittle = c.getString(TimeUtils.TAG_TITLE);
            String desc = c.getString(TimeUtils.TAG_DESC);
            String source = c.getString(TimeUtils.TAG_SOURCE);
            String id = c.getString(TimeUtils.TAG_ID);
            String link = c.getString(TimeUtils.TAG_LINK);
            String published_time = c.getString(TimeUtils.TAG_PUB_TIME);
            String image_url = c.getString(TimeUtils.TAG_IMAGE_URL);
            String newsList = c.getString(TimeUtils.TAG_CLUSTER);
            // download the image;
            Bitmap bitmap = null;


             try { // Download Image from URL 
                 InputStream input = new
              java.net.URL(image_url) .openStream(); // Decode Bitmap

              bitmap = BitmapFactory.decodeStream(input); } catch
              (Exception e) {

              }


            news_home_data.add(new NewsItem(tittle, desc, source, id,
                    link, published_time, bitmap,newsList));
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }
    return news_home_data;
}

@SuppressLint("ResourceAsColor")
@Override
protected void onPostExecute(ArrayList<NewsItem> news_home_data) {
    customNewsHomeAdapter = new NewsHomeAdapter(homeFragmentContext,
            news_home_data);
    listView.setAdapter(customNewsHomeAdapter);
    // setting the nav drawer list adapter
    mProgressDialog.dismiss();
}
}
homepragment.java
@SuppressLint(“新API”)
公共类HomeFragment扩展了片段{
私有列表视图列表视图;
编辑文本搜索;
图像按钮;
进程对话框;
私有NewsHomeAdapter自定义NewsHomeAdapter;
语境;碎片语境;
最终ArrayList新闻\主页\数据=新ArrayList();
//子类JSONArray
JSONArray新闻项=null;
公共HomeFragment(){}
@凌驾
创建视图上的公共视图(布局、充气机、最终视图组容器、,
Bundle savedInstanceState){
视图根视图=充气机。充气(R.layout.fragment\u home,container,false);
homeFragmentContext=container.getContext();
listView=(listView)rootView.findViewById(R.id.news\u home\u list);
search=(EditText)rootView.findViewById(R.id.search);
search.setOnKeyListener(新的OnKeyListener(){
公共布尔onKey(视图v、int keyCode、KeyEvent事件){
if((event.getAction()==KeyEvent.ACTION\u向下)
&&(keyCode==KeyEvent.keyCode\u ENTER)){
字符串查询_text=search.getText().toString().trim();
试一试{
query_text=urlcoder.encode(query_text,“utf-8”);
}捕获(不支持的编码异常e){
}
字符串全文查询=查询文本;
InputMethodManager imm=(InputMethodManager)getActivity().getSystemService(Context.INPUT\u方法\u服务);
imm.hideSoftInputFromWindow(search.getWindowToken(),0);
意向业务=新意向(homeFragmentContext,
SearchNews.class);
Bundle basket_buss_category=新Bundle();
basket\u buss\u category.putString(“搜索”,完整查询);
;
业务。额外支出(篮子类);
startActivity(业务);
返回true;
}
返回false;
}
});
new GetNewsData().execute(TimeUtils.NEWS\u HOME\u URL);
setOnItemClickListener(新的OnItemClickListener(){
公共视图单击(适配器视图a、视图v、内部位置、,
长id){
意图集群=新意图(homeFragmentContext,NewsCluster.class);
Bundle newslist=新Bundle();
newslist.putString(“NLIST”,news\u home\u data.get(position.getCluster());
cluster.putExtras(新闻列表);
星团;
}
});
btn=(ImageButton)rootView.findViewById(R.id.search_按钮);
btn.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图arg0){
字符串查询_text=search.getText().toString().trim();
if(query\u text.equalsIgnoreCase(“”){
search.requestFocus();
InputMethodManager imm=(InputMethodManager)getActivity().getSystemService(Context.INPUT\u方法\u服务);
imm.hideSoftInputFromWindow(search.getWindowToken(),0);
}
否则{
试一试{
query_text=urlcoder.encode(query_text,“utf-8”);
}捕获(不支持的编码异常e){
e、 printStackTrace();
}
字符串全文查询=查询文本;
InputMethodManager imm=(InputMethodManager)getActivity().getSystemService(Context.INPUT\u方法\u服务);
imm.hideSoftInputFromWindow(search.getWindowToken(),0);
意向业务=新意向(homeFragmentContext,SearchNews.class);
Bundle basket_buss_category=新Bundle();
basket\u buss\u category.putString(“搜索”,完整查询);
业务。额外支出(篮子类);
startActivity(业务);
}
}
});
返回rootView;
}
私有类GetNewsData扩展
异步任务{
受保护的void onPreExecute(){
super.onPreExecute();
//shfaq进度对话,请随时下载
//迪安
mProgressDialog=新建进度对话框(homeFragmentContext);
设置消息(“加载…”);
mProgressDialog.setUndeterminate(false);
mProgressDialog.show();
}
@凌驾
受保护的ArrayList doInBackground(字符串…URL){
字符串类别_url=url[0];
//创建JSON解析器实例
JSONParser jParser=新的JSONParser();
//从URL获取JSON字符串
newsItems=jParser.getJSONFromUrl(categories\uURL);
Log.e(“lsbsfbsfdbsfd”,newsItems.toString());
试一试{
对于(int i=0;iNesHomeAdapter.java

package com.dev.apk.time.al;

public class NewsHomeAdapter  extends BaseAdapter{

    private ArrayList<NewsItem> news_data;

    private LayoutInflater layoutInflater;

    public NewsHomeAdapter(Context context, ArrayList<NewsItem> news_data) {
        this.news_data = news_data;
        layoutInflater = LayoutInflater.from(context);
    }

    public int getCount() {
        return news_data.size();
    }

    public Object getItem(int position) {
        return news_data.get(position);
    }

    public long getItemId(int position) {
        return position;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if (convertView == null) {
            convertView = layoutInflater.inflate(R.layout.news_home_row, null);
            holder = new ViewHolder();
            holder.tittle = (TextView) convertView.findViewById(R.id.tittle);
            holder.source = (TextView) convertView.findViewById(R.id.source);
            holder.published_time = (TextView) convertView.findViewById(R.id.published_time);
            holder.news_image = (ImageView) convertView.findViewById(R.id.news_image);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        holder.tittle.setText(((NewsItem) news_data.get(position)).getTittle());
        holder.source.setText(((NewsItem) news_data.get(position)).getSource());
        holder.published_time.setText(((NewsItem) news_data.get(position)).getPublishedTime());
        holder.news_image.setImageBitmap(((NewsItem) news_data.get(position)).getImage());


        return convertView;
    }

    static class ViewHolder {
         ImageView news_image;
         TextView tittle;
         TextView source;
         TextView published_time;

    }       
}
UrlImageViewHelper.setUrlDrawable(yourImageView, "http://example.com/image.png", R.drawable.your_loading_image);
holder.news_image.setImageBitmap(((NewsItem) news_data.get(position)).getImage());
UrlImageViewHelper.setUrlDrawable(holder.news_image, news_data.get(position).getImage(), R.drawable.your_loading_image);
new AsyncTask<String,Void,Void>(){
@Override
protected Void doInBackground(String...arg){
   //download the image against the url, and run in the background as not on UI thread.
}

@Override
protected void onPostExecute(Void v){
    //Load the imageview with the downloaded image.
}

}.execute(url1,url2,url3);