自定义列表视图滚动是口吃

时间:2012-09-07 10:15:28

标签: android android-layout android-listview android-custom-view android-scrollview

    import java.io.BufferedInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;

    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.entity.BufferedHttpEntity;
    import org.apache.http.impl.client.DefaultHttpClient;

    import android.app.Activity;
    import android.content.Context;
    import android.content.Intent;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.graphics.drawable.Drawable;
    import android.net.Uri;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.ViewGroup;
    import android.view.ViewGroup.LayoutParams;
    import android.view.ViewParent;
    import android.webkit.WebView;
    import android.widget.BaseAdapter;
    import android.widget.ImageView;
    import android.widget.ImageView.ScaleType;
    import android.widget.LinearLayout;
    import android.widget.TextView;
    import android.widget.ViewAnimator;

    public class NewsScreenAdapter extends BaseAdapter {

        LayoutInflater inflater;
        public GifDecoderView webview1;
        public static  viewholder holder;
        View view = null;
        public static Context context;
        public ImageLoader IL;
        public String imgUrl;
        public static String addurl;    
        public NewsScreenActivity activity;
        String image;
        public static String str;
        public static Date parsed;
        public static String ac, cat_id;
        int storyLenght;

        public NewsScreenAdapter(NewsScreenActivity a) {
            // TODO Auto-generated constructor stub

            context = a.getApplicationContext();
            this.activity = a;       
            inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            IL = new ImageLoader(activity.getApplicationContext());   
         }

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            // return NewsScreenActivity.arrayList_header.size();

            return NewsScreenActivity.TotalDataArray.size();
        }

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

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

        @Override
        public int getViewTypeCount() {
            // TODO Auto-generated method stub
            return NewsScreenActivity.TotalDataArray.size();
        }
        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return position;
        }

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

            View vi = convertView;

                holder = new viewholder();

                vi = inflater.inflate(R.layout.newsscren_row, null);
                holder.news_header_title = (TextView) vi.findViewById(R.id.header_title);
                holder.ll_data = (LinearLayout) vi.findViewById(R.id.data);

                vi.setTag(holder);

            holder.news_header_title.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub

                    cat_id = NewsScreenActivity.arrayList_header.get(position);
                    ac = ((NewsScreenActivity.MainData) NewsScreenActivity.TotalDataArray.get(position)).catId;

                    activity.startActivity(new Intent(activity,CategoryActivity.class).putExtra("id", ac));

                }
            });

            holder.ll_data.removeAllViews();
            try {


             storyLenght = ((NewsScreenActivity.MainData) NewsScreenActivity.TotalDataArray.get(position)).storyArr.size();
            } catch (Exception e) {
                // TODO: handle exception
            }
            Log.d("Adapter ", " story Lenght " + storyLenght); 

            for (int i = 0; i < storyLenght; i++) {

                view = LayoutInflater.from(activity).inflate(R.layout.sub_row, null);

                holder.short_text = (TextView) view.findViewById(R.id.short_text);
                holder.image = (ImageView) view.findViewById(R.id.image);
                holder.des = (TextView) view.findViewById(R.id.des);
                holder.date_time = (TextView) view.findViewById(R.id.date_time);
                holder.llAdd = (LinearLayout) view.findViewById(R.id.sub_llAdd);
                holder.imgAdd = (ImageView) view.findViewById(R.id.imgAdd);

            try{
                    holder.image.setTag(NewsScreenActivity.arrayList_image.get(i));

                    IL.DisplayImage(
                            ((NewsScreenActivity.ImagesData) ((NewsScreenActivity.StoryData) ((NewsScreenActivity.MainData) NewsScreenActivity.TotalDataArray
                                    .get(position)).storyArr.get(i)).imageArr.get(0)).smallurl, activity, holder.image);

                    notifyDataSetChanged();

                } catch (Exception e) {
                    // TODO: handle exception
                }
     try {
         holder.short_text.setText(((NewsScreenActivity.StoryData) ((NewsScreenActivity.MainData) NewsScreenActivity.TotalDataArray.get(position)).storyArr.get(i)).title);
           holder.des.setText(((NewsScreenActivity.StoryData) ((NewsScreenActivity.MainData) NewsScreenActivity.TotalDataArray.get(position)).storyArr.get(i)).description);


                String st = ((NewsScreenActivity.StoryData) ((NewsScreenActivity.MainData) NewsScreenActivity.TotalDataArray
                        .get(position)).storyArr.get(i)).date;
                parsed = new Date(Long.parseLong(st.substring(6, st.length() - 2)));

                SimpleDateFormat sdf = new SimpleDateFormat("MMM dd,yyyy hh:mmaa");
                System.out.println(sdf.format(parsed));
                String concat = sdf.format(parsed);
                String data = concat;
                String half1 = data.substring(0, 11);
                Log.e("1st date", "" + half1);

                SimpleDateFormat display_date = new SimpleDateFormat("dd.MM.yyyy");
                Date d_date = new Date();
                String dis_date = display_date.format(parsed);

                String half2 = data.substring(11, 19);
                Log.e("2st time", "" + half2);      

                SimpleDateFormat currentdate = new SimpleDateFormat("MMM dd,yyyy");
                Date currunt = new Date();
                String day = currentdate.format(currunt);
                if (half1.equalsIgnoreCase(day) == true) {
                    holder.date_time.setText(half2);
                    Log.v("if condition", "" + half2);
                } else {
                    half1 = dis_date;
                    holder.date_time.setText(half1);
                    Log.v("else condition", "" + half1);
                }
                Log.e("currunt time", "" + day); 

                holder.news_header_title.setText(((NewsScreenActivity.MainData) NewsScreenActivity.TotalDataArray
                                .get(position)).catDisplay);


                if (!((NewsScreenActivity.StoryData) ((NewsScreenActivity.MainData) NewsScreenActivity.TotalDataArray
                        .get(position)).storyArr.get(i)).advertising
                        .equalsIgnoreCase("null")) {

                     holder.short_text.setVisibility(view.GONE);
                     holder.date_time.setVisibility(view.GONE);
                     holder.des.setVisibility(view.GONE);

                    imgUrl = ((NewsScreenActivity.StoryData) ((NewsScreenActivity.MainData) NewsScreenActivity.TotalDataArray
                            .get(position)).storyArr.get(i)).adData.imageurl;

                    // TODO Auto-generated method stub
                    addurl = ((NewsScreenActivity.StoryData) ((NewsScreenActivity.MainData) NewsScreenActivity.TotalDataArray
                            .get(position)).storyArr.get(i)).adData.targeturl;


                    //-----------------GIF Image view ------------


                    //holder.imgAdd.setImageBitmap(IL.getBitmap(imgUrl));
                    holder.imgAdd.setImageBitmap(loadImageFromUrl(imgUrl));
                    /* InputStream is = null;
                        try {
                            is = (InputStream) new URL(imgUrl).getContent();

                      webview1 = new GifDecoderView(context, is);           
                      activity.setContentView(webview1);                                            

                        } catch (Exception e) {
                            return null;
                        }*/

                    try {
                        InputStream is = (InputStream) new URL(imgUrl).getContent();

                        GifDecoderView webview1 = new GifDecoderView(activity, is);
                    //  GifMovieView webview1 = new GifMovieView(activity, is);

                //      holder.llAdd.addView(webview1, holder.imgAdd.getLayoutParams());


                    } catch (Exception e) {
                        // TODO: handle exception
                    }


                    holder.imgAdd.setOnClickListener(new OnClickListener() {                    
                        @Override
                        public void onClick(View v) {                       

                            activity.startActivity(new Intent(activity, AdvertismentActivity.class));

                        }
                    });             
                    Log.i("---", "---------" + imgUrl);
                    holder.llAdd.setVisibility(View.VISIBLE);
                  }

                holder.ll_data.addView(view);      

                Log.i("Set Tag", position+"OK"+i);
                view.setTag(position+"OK"+i);

                view.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {

                        String tag = (String) v.getTag();
                        String[] arr = tag.split("OK");
                        int p = Integer.parseInt(arr[0]);
                        int i = Integer.parseInt(arr[1]);
                        Log.i("Pos and I", p + "   " + i );

                        str = ((NewsScreenActivity.StoryData) ((NewsScreenActivity.MainData) NewsScreenActivity.TotalDataArray .get(p)).storyArr.get(i)).storyid;

                        Log.i("Pos and I and STR", p + "   " + i + "   "  + str);
                        Intent intent = new Intent(context,ShowFullDescriprion.class);
                        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        intent.putExtra("id", str);
                        intent.putExtra("cat", p);
                        intent.putExtra("pos",i);
                        context.startActivity(intent);
                    }
                });
     } catch (Exception e) {
            // TODO: handle exception
        }
            }
            return vi;

        }

        public static String getDate(long milliSeconds, String dateFormat) {
            // Create a DateFormatter object for displaying date in specified
            // format.
            DateFormat formatter = new SimpleDateFormat(dateFormat);

            // Create a calendar object that will convert the date and time value in
            // milliseconds to date.
            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(milliSeconds);
            return formatter.format(calendar.getTime());         
        }    
        public static class viewholder {

            TextView news_header_title, short_text, des, date_time;
            LinearLayout ll_data, llAdd;
            public ImageView image, imgAdd;

        }
        public static Bitmap loadImageFromUrl(String url) {
            URL m;
            InputStream i = null;
            BufferedInputStream bis = null;
            ByteArrayOutputStream out =null;
            try {
                m = new URL(url);
                i = (InputStream) m.getContent();
                bis = new BufferedInputStream(i,1024 * 8);
                out = new ByteArrayOutputStream();
                int len=0;
                byte[] buffer = new byte[1024];
                while((len = bis.read(buffer)) != -1){
                    out.write(buffer, 0, len);
                }
                out.close();
                bis.close();
            } catch (MalformedURLException e1) {
                e1.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            byte[] data = out.toByteArray();
            Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
            //Drawable d = Drawable.createFromStream(i, "src");
            return bitmap;
        }

    } 

3 个答案:

答案 0 :(得分:2)

import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONObject;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.StrictMode;

import android.text.Html;
import android.util.Log;
import android.view.GestureDetector;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

public class ShowFullDescriprion extends Activity implements OnClickListener {

    ImageView show_image, adv_image, refresh,show_home;
    TextView title_text, des_text, date_time_txt;
    Button back_btn;
    LinearLayout ll, llAdv;
    public static String url, full_des, advertising, adurl = "",img,
            targeturl;
    ProgressDialog progressDialog;
    TextView mDisplay;
    AsyncTask<Void, Void, Void> mRegisterTask;
    String TAG = "ShowFullDescriprion";


    public static ArrayList<String> catId = new ArrayList<String>();
    public static ArrayList<String> catDisp = new ArrayList<String>();
    public static ArrayList<String> next_arraylist = new ArrayList<String>();
    public static ArrayList<String> privious_arraylist = new ArrayList<String>();
    //public static ArrayList<String> arrayList_advertising = new ArrayList<String>();

    SimpleGestureFilter simpleGestureFilter;
    LinearLayout llCat;
    TextView tvCatDisp;

    private static final int SWIPE_MIN_DISTANCE = 200;
    private static final int SWIPE_MAX_OFF_PATH = 250;
    private static final int SWIPE_THRESHOLD_VELOCITY = 200;
    int swpCnt = 0;
    int SWIPE_MAX_VALUE = 1;
    int PIC_WIDTH = 0;

    private GestureDetector gestureDetector;
    View.OnTouchListener gestureListener;

    @SuppressWarnings("unused")
    private Animation animleftin = null, animleftout = null,
            animrightin = null, animrightout = null;

    public static String idS, titleS, dateS, descS, next, privious, adv;
    public static String bigimageS=null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.showfull_description);


        back_btn = (Button) findViewById(R.id.button1);
        llCat = (LinearLayout) findViewById(R.id.llCategory);
//      llCat.setOnClickListener(this);
        adv_image = (ImageView) findViewById(R.id.imgAdd);
        refresh = (ImageView) findViewById(R.id.refresh_btn);
        show_home=(ImageView)findViewById(R.id.showfull_des_home);

        llAdv = (LinearLayout) findViewById(R.id.llAdd);
        // simpleGestureFilter = new SimpleGestureFilter(this, this);
    //  int SWIPE_MAX_VALUE_new = ((NewsScreenActivity.MainData) NewsScreenActivity.TotalDataArray.get(getIntent().getExtras().getInt("cat"))).storyArr.size();

        //swpCnt = ((CategoryActivity.MainData) CategoryActivity.TotalDataArray.get(getIntent().getExtras().getInt("cat"))).storyArr.indexOf(getIntent().getExtras().getString("id"));
        //((NewsScreenActivity.StoryData) ((NewsScreenActivity.MainData) NewsScreenActivity.TotalDataArray .get(p)).storyArr.get(i)).storyid;
        //String temp = ((CategoryActivity.StoryData) ((CategoryActivity.MainData) CategoryActivity.TotalDataArray .get(getIntent().getExtras().getInt("cat"))).storyArr.get(getIntent().getExtras().getString("pos"))).storyid;

    //  Log.i("Show full Description .....", "**********************  cat "+getIntent().getExtras().getInt("cat")+" **** id *** "+getIntent().getExtras().getString("id"));
        //Log.i("Show full Description .....", "**********************  SWIPE_MAX_VALUE_new "+ SWIPE_MAX_VALUE_new+" *** swpCnt **** "+temp +"**** Array *** "+((CategoryActivity.MainData) CategoryActivity.TotalDataArray.get(getIntent().getExtras().getInt("cat"))).storyArr.get(5));
        try {
        //  SWIPE_MAX_VALUE = ((NewsScreenActivity.MainData) NewsScreenActivity.TotalDataArray.get(getIntent().getExtras().getInt("cat"))).storyArr.size();
            SWIPE_MAX_VALUE = ((CategoryActivity.MainData) CategoryActivity.TotalDataArray.get(getIntent().getExtras().getInt("cat"))).storyArr.size();
            swpCnt = getIntent().getExtras().getInt("pos");

        } catch (Exception e) {
            // TODO: handle exception
        }

        url = "http://maritimeglobalnews.com/json/story/"+ getIntent().getExtras().getString("id");

        new StoryDataAsyn().execute();

        title_text = (TextView) findViewById(R.id.show_full_des_title_txt);
        show_image = (ImageView) findViewById(R.id.show_full_des_image);
        des_text = (TextView) findViewById(R.id.show_full_des_txt);
        date_time_txt = (TextView) findViewById(R.id.show_full_des_datetime_txt);

        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();

        StrictMode.setThreadPolicy(policy); 

        show_home.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
            startActivity(new Intent(getBaseContext(), NewsScreenActivity.class));
            finish();
            }
        });

    /*  Log.i(TAG,
                "================Inside OnCreate Method==============================");
        checkNotNull(SERVER_URL, "SERVER_URL");
        checkNotNull(SENDER_ID, "SENDER_ID");
        // Make sure the device has the proper dependencies.
        GCMRegistrar.checkDevice(getBaseContext());
        // Make sure the manifest was properly set - comment out this line
        // while developing the app, then uncomment it when it's ready.
        GCMRegistrar.checkManifest(getBaseContext());

        registerReceiver(mHandleMessageReceiver, new IntentFilter(
                DISPLAY_MESSAGE_ACTION));
        final String regId = GCMRegistrar.getRegistrationId(this);
        if (regId.equals("")) {
            Log.i(TAG,
                    "================Inside if in regId=null ==============================");
            // Automatically registers application on startup.
            GCMRegistrar.register(this, SENDER_ID);
        } else {
            Log.i(TAG,
                    "================Inside else in regId=null ==============================");
            // Device is already registered on GCM, needs to check if it is
            // registered on our server as well.
            if (GCMRegistrar.isRegisteredOnServer(this)) {
                // Skips registration.
                Log.i(TAG,
                        "================Inside else in regId=null Already register on Server =============================");
                mDisplay.append(getString(R.string.already_registered) + "\n");
            } else {
                Log.i(TAG,
                        "================Inside else in regId=null trying to  register on Server =============================");
                // Try to register again, but not in the UI thread.
                // It's also necessary to cancel the thread onDestroy(),
                // hence the use of AsyncTask instead of a raw thread.
                final Context context = this;
                mRegisterTask = new AsyncTask<Void, Void, Void>() {

                    @Override
                    protected Void doInBackground(Void... params) {
                        Log.i(TAG,
                                "================Inside doInBackground Method==============================");
                        boolean registered = ServerUtilities.register(context,
                                regId);
                        // At this point all attempts to register with the app
                        // server failed, so we need to unregister the device
                        // from GCM - the app will try to register again when
                        // it is restarted. Note that GCM will send an
                        // unregistered callback upon completion, but
                        // GCMIntentService.onUnregistered() will ignore it.
                        if (!registered) {
                            GCMRegistrar.unregister(context);
                        }
                        return null;
                    }

                    @Override
                    protected void onPostExecute(Void result) {
                        Log.i(TAG,
                                "================Inside onPostExecute Method==============================");
                        mRegisterTask = null;
                    }

                };
                mRegisterTask.execute(null, null, null);
            }
        }       */

        back_btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                ShowFullDescriprion.this.finish();
            }
        });
        refresh.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                new StoryDataAsyn().execute();      

            }
        });

        gestureDetector = new GestureDetector(new MyGestureDetector());
        gestureListener = new View.OnTouchListener() {
            public boolean onTouch(View v, MotionEvent event) {
                return gestureDetector.onTouchEvent(event);
            }
        };
        prepareAnimations();
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        // TODO Auto-generated method stub
        return super.onTouchEvent(event);
    }

    /*boolean net;

    //onCreate
    net = void isOnline() {
    }
    if (net == true)
    {
    //perform internet related tasks in the app
    }

    //function
    public boolean isOnline1() {
            ConnectivityManager cm = (ConnectivityManager) this
                    .getSystemService(Context.CONNECTIVITY_SERVICE);

            NetworkInfo activeNetworkInfo = cm.getActiveNetworkInfo();
            return activeNetworkInfo != null;

            // return cm.getActiveNetworkInfo().isConnected();

        }*/


    public class StoryDataAsyn extends AsyncTask<Void, Void, Void> {
    //  NewsScreenActivity obj = new NewsScreenActivity();

        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            super.onPreExecute();

    //      if (isNetworkConnected() == true) 
    //      {
                progressDialog = new ProgressDialog(ShowFullDescriprion.this);
                progressDialog.setMessage("Loding ...");
                progressDialog.setCancelable(false);
                progressDialog.show();
/*          } else  {
                AlertDialog connection = new AlertDialog.Builder(
                        ShowFullDescriprion.this)
                        .setTitle("No Network Found")
                        .setMessage(
                                "Internet Connection Reqired To Use this Application")
                        .setPositiveButton("Ok",
                                new DialogInterface.OnClickListener() {

                                    public void onClick(DialogInterface dialog,
                                            int whichButton) 
                                    {

                                    }
                                }).create();

                connection.show();
            }
*/      }

        @Override
        protected Void doInBackground(Void... params) {
            // TODO Auto-generated method stub

            catId.clear();
            catDisp.clear();            
            getData(url);

            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            // TODO Auto-generated method stub
            super.onPostExecute(result);
            if (isNetworkConnected() == true) {

            progressDialog.dismiss();
            title_text.setText(titleS);         

            /*if(bigimageS!= null && !bigimageS.equals(""))
            {
            show_image.setImageBitmap(decodeImage(bigimageS));
            Log.v("if", ""+bigimageS);
            }else
            {
                show_image.setImageBitmap(decodeImage(null));

                Log.v("else", ""+bigimageS);
            }   
*/

            if(isBlank(bigimageS)==true)

            {
                show_image.setVisibility(View.GONE);
                show_image.setImageBitmap(decodeImage(null));
            }
            else if(isBlank(bigimageS)==false)
            {
                show_image.setImageBitmap(decodeImage(bigimageS));
            }
    //      show_image.setImageBitmap(loadImageFromUrl(bigimageS));         

            //show_image.setImageBitmap(decodeImage(bigimageS));
            des_text.setText(Html.fromHtml(descS));         

            Date parsed = new Date(Long.parseLong(dateS.substring(6,
                    dateS.length() - 2)));

            SimpleDateFormat sdf = new SimpleDateFormat("MMM dd,yyyy hh:mmaa");
            System.out.println(sdf.format(parsed));

            date_time_txt.setText(sdf.format(parsed));

            llCat.removeAllViews();
            for (int i = 0; i < catId.size(); i++) {

                tvCatDisp = new TextView(ShowFullDescriprion.this);

                tvCatDisp.setText("");      

                tvCatDisp.setText(catDisp.get(i));
                tvCatDisp.setBackgroundResource(R.drawable.box);
                tvCatDisp.setTextColor(Color.BLACK);
                tvCatDisp.setTextSize(18);
                tvCatDisp.setTag(i);
                Log.e("tvCatDisp............", ""+catDisp.get(i));
                tvCatDisp.setOnClickListener(ShowFullDescriprion.this);

                tvCatDisp.setOnClickListener(new OnClickListener() {

                 @Override
                 public void onClick(View v) {
                 // TODO Auto-generated method stub
                 int pos = Integer.parseInt(v.getTag().toString());
                 startActivity(new Intent(ShowFullDescriprion.this,
                 CategoryActivity.class).putExtra("id",catId.get(pos)));
                 }
                 });

                llCat.addView(tvCatDisp);
            }
            llAdv.removeAllViews();
            if ((!adurl.equalsIgnoreCase("")) && adurl != null) {
                llAdv.setVisibility(View.VISIBLE);
                ImageLoader il = new ImageLoader(ShowFullDescriprion.this);

            //  adv_image.setImageBitmap(il.getBitmap(adurl));
        //      adv_image.setImageBitmap(loadImageFromUrl(adurl));
                  try {
                        InputStream is = (InputStream) new URL(adurl).getContent();

                        GifDecoderView webview1 = new GifDecoderView(ShowFullDescriprion.this, is);




                    //    activity.setContentView(webview1);

                    llAdv.addView(webview1,adv_image.getLayoutParams());

                   // holder.imgAdd.setImageBitmap(IL.getBitmap(imgUrl));


                    } catch (Exception e) {

                    }

                  llAdv.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                    //    Intent showAdvIntent =new Intent(ShowFullDescriprion.this,AdvertismentActivity.class);
                    //    showAdvIntent.putExtra("id",targeturl);
                        startActivity(new Intent(getBaseContext(),AdvertismentActivity.class));
                        Log.e("show add url...", ""+targeturl);
                    }
                });
            } 
            }else 

            {
                llAdv.setVisibility(View.GONE);
                AlertDialog connection = new AlertDialog.Builder(
                        ShowFullDescriprion.this)
                        .setTitle("No Network Found")
                        .setMessage(
                                "Internet Connection Reqired To Use this Application")
                        .setPositiveButton("Ok",
                                new DialogInterface.OnClickListener() {

                                    public void onClick(DialogInterface dialog,
                                            int whichButton) 
                                    {
                                    //  new StoryDataAsyn().execute();
                                        progressDialog.dismiss();
                                    }
                                }).create();

                connection.show();              

            }       

        }
    }
    public boolean isNetworkConnected() {
        ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo ni = cm.getActiveNetworkInfo();
        if (ni == null) {
            return false;
        } else

        return true;
    }

    public void getData(String url) {

        HttpClient client = new DefaultHttpClient();
        HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000); // Timeout        

        try {

            HttpPost request = new HttpPost(url);

            DefaultHttpClient httpClient = new DefaultHttpClient();

            HttpResponse res = httpClient.execute(request);
            Log.i("Request", request.toString());

            String JsonResponseData = EntityUtils.toString(res.getEntity());
            Log.i("JSON", JsonResponseData);

            JSONObject mainJsonObj = new JSONObject(JsonResponseData);

            titleS = mainJsonObj.getString("Title");
            dateS = mainJsonObj.getString("Date");
            descS = mainJsonObj.getString("ContentHTML");
            next = mainJsonObj.getString("NextStoryEID");
            next_arraylist.add(next);
            Log.e("next id", "" + next_arraylist);
            Log.e("nextstring id", "" + next);

            privious = mainJsonObj.getString("PrevStoryEID");
            privious_arraylist.add(privious);
            Log.e("privious id", "" + privious_arraylist);
            Log.e("privious string id", "" + privious);

            try {
                JSONArray tmpAd = mainJsonObj.optJSONArray("advertising");              
                adurl = tmpAd.getJSONObject(0).getString("ImageUrl");
                targeturl = tmpAd.getJSONObject(0).getString("TargetUrl");
                Log.v("target url is", "" + targeturl);

            } catch (Exception e) {
                // TODO: handle exception
            }



            try {
                JSONArray tmpimg = mainJsonObj.optJSONArray("images");          
                bigimageS = tmpimg.getJSONObject(0).getString("iPhoneBigImageURL");             
                Log.v("bigimageS is", "" + bigimageS);
            } catch (Exception e) {
                // TODO: handle exception
            }       

            JSONArray categJsonArr = mainJsonObj.getJSONArray("categories");    

            for (int i = 0; i < categJsonArr.length(); i++) {

                catId.add(categJsonArr.getJSONObject(i) .getString("CategoryEID"));
                catDisp.add(categJsonArr.getJSONObject(i).getString("CategoryDisplay"));
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    public static Bitmap loadImageFromUrl(String url) {
        URL m;
        InputStream i = null;
        BufferedInputStream bis = null;
        ByteArrayOutputStream out =null;
        try {
            m = new URL(url);
            i = (InputStream) m.getContent();
            bis = new BufferedInputStream(i,1024 * 8);
            out = new ByteArrayOutputStream();
            int len=0;
            byte[] buffer = new byte[1024];
            while((len = bis.read(buffer)) != -1){
                out.write(buffer, 0, len);
            }
            out.close();
            bis.close();
        } catch (MalformedURLException e1) {
            e1.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        byte[] data = out.toByteArray();
        Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
        //Drawable d = Drawable.createFromStream(i, "src");
        return bitmap;
    }


    public static Bitmap decodeImage(String arrayList_image) {

        URL aURL;

        try {

            aURL = new URL(arrayList_image);

            URLConnection conn = aURL.openConnection();

            conn.connect();

            InputStream is = conn.getInputStream();

            BufferedInputStream bis = new BufferedInputStream(is);

            Bitmap bm = BitmapFactory.decodeStream(bis);

            bis.close();

            is.close();

            return bm;

        } catch (MalformedURLException e) {

            e.printStackTrace();

        } catch (IOException e) {

            e.printStackTrace();
        }
        return null;
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent me) {
        this.gestureDetector.onTouchEvent(me);
        return super.dispatchTouchEvent(me);
    }

    class MyGestureDetector extends SimpleOnGestureListener {
        @Override
        public boolean onDown(MotionEvent e) {
            // TODO Auto-generated method stub

            return super.onDown(e);
        }

        @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
                float velocityY) {

            Log.e("Inside onfling", "Call");

            if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
                return false;
            // right to left swipe
            if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {

                url = "http://maritimeglobalnews.com/json/story/"+next;
                new StoryDataAsyn().execute();

                Log.d("url next mate", ""+url);
                Log.d("right to left privious.....", ""+next_arraylist);        

            try {
                Log.i("","swip count " + swpCnt+" ***** "+((CategoryActivity.MainData) CategoryActivity.TotalDataArray.get(getIntent().getExtras().getInt("cat"))).storyArr.size());    
            } catch (Exception e) {
                // TODO: handle exception
            }               
                if (swpCnt >= 0 && swpCnt < SWIPE_MAX_VALUE - 1) 
                {
                    swpCnt++;

                /*  url = "http://maritimeglobalnews.com/json/story/"+next;
                    new StoryDataAsyn().execute();

                    Log.d("url next mate", ""+url);
                    Log.d("right to left privious.....", ""+next_arraylist);        */      
                }               
            } 
            else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY ){ 



                url = "http://maritimeglobalnews.com/json/story/"+privious;
                Log.v("previousid first if", ""+privious);
                Log.i("right to left privious first if.....", ""+privious_arraylist);

                new StoryDataAsyn().execute();  

                if (swpCnt > 0 && swpCnt <= SWIPE_MAX_VALUE - 1) {


                    swpCnt--;

                    /*url = "http://maritimeglobalnews.com/json/story/"+privious;
                    Log.v("url",""+url);
                    Log.v("previousid 2 if", ""+privious);                  
                    new StoryDataAsyn().execute();      */              
                }
                try {
                    Log.i("","swip count " + swpCnt+" ***** "+((CategoryActivity.MainData) CategoryActivity.TotalDataArray.get(getIntent().getExtras().getInt("cat"))).storyArr.size());                    
                } catch (Exception e) {
                    // TODO: handle exception
                }

                /*if (swpCnt > 0 && swpCnt <= SWIPE_MAX_VALUE - 1) 
                {
                    swpCnt--;   

                    url = "http://maritimeglobalnews.com/json/story/"+privious;
                    Log.v("previousid 3 if", ""+privious);
                    Log.i("right to left privious. 3 if", ""+privious_arraylist);                   

                    new StoryDataAsyn().execute();              
                }   */                      
            }
            return false;
        }
    }

    private void prepareAnimations() {
        animleftin = new TranslateAnimation(Animation.RELATIVE_TO_PARENT,
                +1.0f, Animation.RELATIVE_TO_PARENT, 0.0f,
                Animation.RELATIVE_TO_PARENT, 0.0f,
                Animation.RELATIVE_TO_PARENT, 0.0f);

        animleftout = new TranslateAnimation(Animation.RELATIVE_TO_PARENT,
                0.0f, Animation.RELATIVE_TO_PARENT, -1.0f,
                Animation.RELATIVE_TO_PARENT, 0.0f,
                Animation.RELATIVE_TO_PARENT, 0.0f);

        animrightin = new TranslateAnimation(Animation.RELATIVE_TO_PARENT,
                -1.0f, Animation.RELATIVE_TO_PARENT, 0.0f,
                Animation.RELATIVE_TO_PARENT, 0.0f,
                Animation.RELATIVE_TO_PARENT, 0.0f);

        animrightout = new TranslateAnimation(Animation.RELATIVE_TO_PARENT,
                0.0f, Animation.RELATIVE_TO_PARENT, +1.0f,
                Animation.RELATIVE_TO_PARENT, 0.0f,
                Animation.RELATIVE_TO_PARENT, 0.0f);
            }

    /*@Override
    protected void onDestroy() {
        Log.i(TAG,
                "================Inside  OnDestroy  Method==============================");
        if (mRegisterTask != null) {
            mRegisterTask.cancel(true);
        }
        unregisterReceiver(mHandleMessageReceiver);
        GCMRegistrar.onDestroy(this);
        super.onDestroy();
    }

    private void checkNotNull(Object reference, String name) {
        Log.i(TAG,
                "================Inside checkNotNull  Method==============================");
        if (reference == null) {
            throw new NullPointerException(getString(R.string.error_config,
                    name));
        }
    }

    private final BroadcastReceiver mHandleMessageReceiver = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
            Log.i(TAG,
                    "================Inside OnReceive in BroadcastReceiver Method==============================");
            String newMessage = intent.getExtras().getString(EXTRA_MESSAGE);
            mDisplay.append(newMessage + "\n");
        }
    };*/

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        if (v == tvCatDisp) {

            // TODO Auto-generated method stub

            startActivity(new Intent(ShowFullDescriprion.this,
                    CategoryActivity.class).putExtra("id", catId.get((Integer)v.getTag())));
        }

    }
    public static boolean isBlank(String string) {
        if (bigimageS == null || bigimageS.length() == 0)
            return true;

        int l = bigimageS.length();
        for (int i = 0; i < l; i++) {
            if (!Character.isWhitespace(bigimageS.codePointAt(i)))
                return false;
        }
        return true;
    }

}

答案 1 :(得分:1)

您没有重复使用列表项。这就是为什么名单开始“口吃”。

这个问题有很多答案显示重用ListView项目的概念。 Like this one

一般情况下:在getView方法中,检查convertView是否为空。如果是,请夸大你的观点。如果它不为null,则只需插入要显示的项目。这应该可以解决你的口吃列表视图问题。

答案 2 :(得分:0)

请使用BaseAdpter中的现有布局,如下所示

ViewHolder holder = null;

    if ( convertView == null )
    {
        /* There is no view at this position, we create a new one. 
           In this case by inflating an xml layout */
        convertView = mInflater.inflate(R.layout.listview_item, null);  
        holder = new ViewHolder();
        holder.toggleOk = (ToggleButton) convertView.findViewById( R.id.togOk );
        convertView.setTag (holder);
    }
    else
    {
        /* We recycle a View that already exists */
        holder = (ViewHolder) convertView.getTag ();
    }

这可能有助于你