2013-04-11 60 views
1
   // Mystock.java 

       public class MyStock extends Activity 
       { 

        DatabaseHelper db; 
        DownloadFileviaHTTP1 d; 
        private mItems[] itemss; 
        EditText txtPriceEdit=null; 
        ProgressDialog progressDialog; 
        public ListView lst_stockListing; 
        List<HashMap<String, String>> fillMaps ; 
        ArrayList<mItems> planetList = new ArrayList<mItems>(); 
        RelativeLayout slider = null,listview=null,topHeader=null,remaniningBucks=null; 
        Button btn_leftpanel,btn_editstock,btnbuy,btncancel,btnaccept,btnsub,btnadd,btnsell; 
        String[] from = new String[] {"companyName", "ButtonBuy", "currentPrice", "ButtonSell"}; 
        private ArrayAdapter<com.indusa.stockapp.stockListing.DownloadFileviaHTTP1.mItems> listAdapter; 
        int[] to = new int[] { R.id.txtstockname_custom, R.id.btnbuy_custom, R.id.txtcurrent_custom, R.id.btnsell_custom }; 
        TextView txtnifty=null,txtremainingbucks=null,txt_stockqty=null,txt_quantity=null,txtPrice=null,txtPriceChange=null; 

        @Override 
        public void onCreate(Bundle savedInstanceState) 
        { 
         super.onCreate(savedInstanceState); 
         setContentView(R.layout.mystock); 

         //Button 
         btn_leftpanel=(Button)findViewById(R.id.btn_leftpanel); 
         btncancel=(Button)findViewById(R.id.btncancel); 
         btnaccept=(Button)findViewById(R.id.btnaccept); 
         btnsub=(Button)findViewById(R.id.btn_sub); 
         btnadd=(Button)findViewById(R.id.btn_add); 
         btn_editstock=(Button)findViewById(R.id.btn_editstock); 

         //layout 
         listview=(RelativeLayout)findViewById(R.id.listview); 
         slider = (RelativeLayout)findViewById(R.id.layout_relative_slider); 
         topHeader=(RelativeLayout)findViewById(R.id.layout_top_header); 
         remaniningBucks=(RelativeLayout)findViewById(R.id.layout_remainingbucks); 

         //TextView 
         txtnifty=(TextView)findViewById(R.id.txtnifty50_text); 
         txtremainingbucks=(TextView)findViewById(R.id.txtremainingbucks_text); 
         txt_stockqty=(TextView)findViewById(R.id.txtstockqty); 
         txt_quantity=(TextView)findViewById(R.id.txtquantity); 
         txtPriceEdit=(EditText)findViewById(R.id.txtprice_edit); 
         txtPrice=(TextView)findViewById(R.id.txtprice); 
         txtPriceChange=(TextView)findViewById(R.id.txtprice_change); 

         //listview 
         lst_stockListing=(ListView)findViewById(R.id.lst_mystock); 

         itemss = (mItems[]) getLastNonConfigurationInstance(); 

         d=new DownloadFileviaHTTP1(); 

         txtnifty.setText("100000.00"); 
         txtremainingbucks.setText("100000.00"); 
         txtremainingbucks.setTextColor(android.graphics.Color.rgb(105,160,38)); 

         ArrayList<Items>details = new ArrayList<Items>(); 


          //displyaing the stock in the listview from the table 
          DatabaseHelper db = new DatabaseHelper(MyStock.this,"StockApp"); 
          db.getReadableDatabase(); 
          Cursor cur=db.view_mystock("TBL_MYSTOCK", db); 
          Log.d("cursor count : "," " +cur.getCount()); 

         Items item; 
         while(cur.moveToNext()) 
         { 
          item=new Items(); 
          item.setName(cur.getString(1)); 
          item.setPrice(cur.getString(2)); 
          Log.d("quantity count ",cur.getString(6)); 
          if (Integer.parseInt(cur.getString(6).toString())>0) 
          { 
           item.setButtonbackground(); 
           // btnbuy.setBackgroundDrawable(getResources().getDrawable(R.drawable.buy_stock_number)); 
           item.setBuy(cur.getString(6)); 
          } 
           details.add(item); 
         } 

         lst_stockListing.setAdapter(new abc(details , this)); 


         function(); 
        } 
        public void display_called(Cursor cur) 
        { 
         fillMaps= new ArrayList<HashMap<String, String>>(); 
         String s=""; 
         int count=0; 
         Log.d("cursor count"," "+cur.getCount()); 
         while(cur.moveToNext()) 
         { 
          Log.d("company name",cur.getString(1)); 
          HashMap<String, String> map = new HashMap<String, String>(); 
          String str=cur.getString(1); 
          s=""; 
          count=0; 
          for(int i=0;i<str.length();i++) 
          {  
          char c=str.charAt(i); 
          if (Character.isWhitespace(c)==true) 
          { 
           count=count+1; 
           if (count==2) 
            s=s+System.getProperty("line.separator"); 
           else 
            s=s+c; 
          } 
          else 
          { 
           s=s+c; 
          } 
          } 
          map.put("companyName",s); 
          map.put("ButtonBuy"," "); 
          map.put("currentPrice",cur.getString(2)); 
          map.put("ButtonSell"," "); 
          fillMaps.add(map); 
         } 
        } 
        public static class Items 
        { 
         private String companyName = ""; 
         private Button btnbuy=null; 
         private String price = ""; 
         private String buy,sell; 

         public Items() 
         { 

         } 
         public Items(String name) 
         { 
          this.companyName = name;  
         } 
         public Items(String name,String price) 
         { 
          this.companyName=name; 
          this.price=price; 
         } 
         public Items(String name,String price,String buy,String sell) 
         { 
          this.companyName=name; 
          this.price=price; 
          this.buy=buy; 
          this.sell=sell; 
         } 
         public void setButtonbackground() 
         { 
          btnbuy.setBackgroundResource(R.drawable.buy_stock_number); 
         } 
         public String getName() 
         { 
          return companyName; 
         } 

         public String getPrice() 
         { 
          return price; 
         } 
         public String getBuy() 
         { 
          return buy; 
         } 
         public String getSell() 
         { 
          return sell; 
         } 

         public void setName(String name) 
         { 
          this.companyName = name; 
         } 
         public void setPrice(String price) 
         { 
          this.price=price; 
         } 
         public void setBuy(String buy) 
         { 
          this.buy=buy; 
         } 
         public void setSell(String sell) 
         { 
          this.sell=sell; 
         } 
        } 

        public class abc extends BaseAdapter 
        { 

         private ArrayList<Items> _data; 
         Context _c; 

         abc (ArrayList<Items> data, Context c) 
         { 
           _data = data; 
           _c = c; 
         } 
         public int getCount() 
         { 
          return _data.size(); 
         } 

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

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

         public View getView(final int position, View convertView, ViewGroup parent) 
         { 
          final Items item =new Items(); 

          View v = convertView; 
          if (v == null) 
          { 
           LayoutInflater vi = (LayoutInflater)_c.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
           v = vi.inflate(R.layout.custom_mystock, null); 
          } 

           TextView companyName = (TextView) v.findViewById(R.id.txtstockname_custom); 
           Button buy = (Button)v.findViewById(R.id.btnbuy_custom); 
           TextView current= (TextView)v.findViewById(R.id.txtcurrent_custom); 
           Button sell = (Button)v.findViewById(R.id.btnsell_custom); 


           Items msg = _data.get(position); 
           Log.d("msg view paret ",""+msg); 

           companyName.setText(msg.companyName); 
           current.setText(msg.price); 
           buy.setText(msg.buy) ; 
           sell.setText(msg.sell); 

           buy.setOnClickListener(new View.OnClickListener() 
           { 
            public void onClick(View v1) 
            { 
             slider.setVisibility(View.VISIBLE); 
             /* Items i =lst_stockListing.getChildCount(); 
             holder.planetNameView.setText(p.getName()); 
             holder.distView.setText("" + p.getDistance());*/ 
             DatabaseHelper db = new DatabaseHelper(MyStock.this,"StockApp"); 
             db.getReadableDatabase(); 
             Cursor cur=db.view_mystock("TBL_MYSTOCK", db); 
             Log.d("cursor count : "," " +cur.getCount()); 
             db.close(); 
             cur.move(position); 
             while(cur.moveToNext()) 
             { 
              Toast.makeText(MyStock.this,cur.getString(2), 1000).show(); 
              txtPrice.setText(cur.getString(2)); 
              txtPriceEdit.setText(cur.getString(2)); 
              Float i=Float.parseFloat(txtPrice.getText().toString()) * Integer.parseInt(txt_quantity.getText().toString()); 
              txtPriceChange.setText(""+i); 
              break; 
             } 
            } 
           }); 
           sell.setOnClickListener(new View.OnClickListener() 
           { 
            public void onClick(View v) 
            { 
             slider.setVisibility(View.VISIBLE); 
             txtPrice.setText(""+position); 
             Toast.makeText(MyStock.this," "+position, 1000).show();  
            } 
           }); 
           return v; 
         } 
        } 
        public class periodicChecker extends Thread 
        { 
         public void run() 
         { 
          while(true) 
          { 
           try 
            { 
             final Handler refresh = new Handler(Looper.getMainLooper()); 
            refresh.post(new Runnable() 
            { 

             public void run() 
             { 
               planetList.clear(); 
               progressDialog = ProgressDialog.show(MyStock.this, "", "Fetching Current Price..."); 
               DatabaseHelper db = new DatabaseHelper(MyStock.this,"StockApp"); 
               db.getWritableDatabase(); 
               Cursor cur=db.view_mystock("TBL_MYSTOCK", db); 
               Log.d("cursor count : "," " +cur.getCount()); 
               db.close(); 
               display_called(cur); 
               while(cur.moveToNext()) 
                Log.d("cursor symbol",cur.getString(0)); 
               d.downloadFileViaHTTP1(db); 
               //listAdapter = new com.indusa.stockapp.stockListing.DownloadFileviaHTTP1.SelectArralAdapter(MyStock.this,planetList); 
               //lst_stockListing.setAdapter(listAdapter); 
             } 
            }); 
            Thread.sleep(5000); 
            progressDialog.dismiss(); 
            Thread.sleep(50000); 

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

          } 
         } 

        } 
        void function() 
        { 
         btn_leftpanel.setOnClickListener(new View.OnClickListener() 
         { 
          public void onClick(View v) 
          { 
           Intent in =new Intent(MyStock.this,ListingItem.class); 
           startActivity(in); 
          } 
         }); 

         btn_editstock.setOnClickListener(new View.OnClickListener() 
         { 
          public void onClick(View v) 
          { 

           Log.d("top position ","" +listview.getTop()); 
          } 
         }); 
         btncancel.setOnClickListener(new View.OnClickListener() 
         { 
          public void onClick(View v) 
          { 
           Log.d("cancel","called"); 
           slider.setVisibility(View.GONE); 
          } 
         }); 
         btnaccept.setOnClickListener(new View.OnClickListener() 
         { 
          public void onClick(View v) 
          {    

          } 
         }); 
         btnadd.setOnClickListener(new View.OnClickListener() 
         { 
          public void onClick(View v) 
          { 
           int val=Integer.parseInt(txt_stockqty.getText().toString()); 
           if (val<100) 
            val=val+10; 

           txt_stockqty.setText(""+val); 
           txt_quantity.setText(""+val); 
           txtPriceEdit.setText(""+txtPrice.getText().toString()); 
           float val1=Float.parseFloat(txtPriceEdit.getText().toString());    
           txtPriceChange.setText("" + val*val1); 
          } 
         }); 
         btnsub.setOnClickListener(new View.OnClickListener() 
         { 
          public void onClick(View v) 
          { 
           int val=Integer.parseInt(txt_stockqty.getText().toString()); 
           if (val>10) 
            val=val-10; 

           txt_stockqty.setText(""+val); 
           txt_quantity.setText(""+val); 
           txtPriceEdit.setText(txtPrice.getText().toString()); 
           float val1=Float.parseFloat(txtPriceEdit.getText().toString()); 
           txtPriceChange. setText(""+val*val1); 
          } 
         }); 
         txtPriceEdit.setOnClickListener(new View.OnClickListener() 
         { 
          public void onClick(View v) 
          { 

          } 
         }); 
        } 
       } 
      //=========== 
      //mystock.xml 
      //============= 
      <?xml version="1.0" encoding="utf-8"?> 
      <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="320dp" 
       android:layout_height="match_parent" 
       android:background="@drawable/main_bg" 
       android:orientation="vertical" > 

       <RelativeLayout 
        android:id="@+id/layout_name" 
        android:layout_width="320dp" 
        android:layout_height="30dp" 
        android:layout_alignParentRight="true" 
        android:layout_below="@id/layout_remainingbucks" 
        android:background="@drawable/top_header2" > 

        <TextView 
         android:id="@+id/txtstockname" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_marginTop="3dp" 
         android:paddingLeft="10dp" 
         android:text="@string/lblstockname" 
         android:textColor="#ffffff" 
         android:textSize="18sp" 
         android:textStyle="bold" /> 

        <TextView 
         android:id="@+id/txtbuy" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_marginTop="3dp" 
         android:layout_toLeftOf="@+id/txtcurrent" 
         android:drawableLeft="@drawable/seperator_header2" 
         android:drawablePadding="10dp" 
         android:paddingRight="12dp" 
         android:text="@string/lblbuy" 
         android:textColor="#ffffff" 
         android:textSize="18sp" 
         android:textStyle="bold" /> 

        <TextView 
         android:id="@+id/txtcurrent" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_marginTop="3dp" 
         android:layout_toLeftOf="@+id/txtsell" 
         android:drawableLeft="@drawable/seperator_header2" 
         android:drawablePadding="2dp" 
         android:paddingRight="2dp" 
         android:text="@string/lblcurrent" 
         android:textColor="#ffffff" 
         android:textSize="18sp" 
         android:textStyle="bold" /> 

        <TextView 
         android:id="@+id/txtsell" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_alignParentRight="true" 
         android:layout_marginTop="3dp" 
         android:drawableLeft="@drawable/seperator_header2" 
         android:drawablePadding="10dp" 
         android:paddingRight="12dp" 
         android:text="@string/lblsell" 
         android:textColor="#ffffff" 
         android:textSize="18sp" 
         android:textStyle="bold" /> 
       </RelativeLayout> 
      </RelativeLayout> 
      //================== 
      //custom_mystock.xml 
      //=================== 
      <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:orientation="horizontal" > 

       <TextView 
        android:id="@+id/txtstockname_custom" 
        android:layout_width="wrap_content" 
        android:layout_height="40dp" 
        android:layout_alignParentLeft="true" 
        android:layout_toLeftOf="@+id/btnbuy_custom" 
        android:gravity="center_vertical" 
        android:paddingLeft="10dp" 
        android:singleLine="false" 
        android:text="@string/lblstockname" 
        android:textColor="#000000" 
        android:textSize="14sp" /> 

       <Button 
        android:id="@+id/btnbuy_custom" 
        android:layout_width="53dp" 
        android:layout_height="40dp" 
        android:layout_toLeftOf="@+id/txtcurrent_custom" 
        android:drawableLeft="@drawable/seperator_header2" 
        android:drawablePadding="10dp" 
        android:background="@drawable/buy_stock2" 
        android:paddingRight="12dp" 
        android:textSize="18sp" 
        android:textStyle="bold" /> 

       <TextView 
        android:id="@+id/txtcurrent_custom" 
        android:layout_width="72dp" 
        android:layout_height="40dp" 
        android:layout_toLeftOf="@+id/btnsell_custom" 
        android:drawableLeft="@drawable/seperator_header2" 
        android:drawablePadding="2dp" 
        android:paddingRight="2dp" 
        android:gravity="center" 
        android:text="@string/lblcurrent" 
        android:textColor="#000000" 
        android:textSize="14sp" /> 

       <Button 
        android:id="@+id/btnsell_custom" 
        android:layout_width="52dp" 
        android:layout_height="40dp" 
        android:layout_alignParentRight="true" 
        android:drawableLeft="@drawable/seperator_header2" 
        android:drawablePadding="10dp" 
        android:paddingRight="12dp" 
        android:textColor="#000000" 
        android:background="@drawable/sell_stock2" 
        android:textSize="18sp" 
        android:textStyle="bold" /> 

      </RelativeLayout> 
//======== 
//logcat 
//====== 
04-11 18:12:17.110: D/cursor(28082): [email protected] 
04-11 18:12:17.110: D/cursor count :(28082): 5 
04-11 18:12:17.110: D/quantity count(28082): 0 
04-11 18:12:17.110: D/quantity count(28082): 0 
04-11 18:12:17.110: D/quantity count(28082): 0 
04-11 18:12:17.110: D/quantity count(28082): 10 
04-11 18:12:17.110: W/dalvikvm(28082): threadid=1: thread exiting with uncaught exception (group=0x4001e578) 
04-11 18:12:17.130: E/AndroidRuntime(28082): FATAL EXCEPTION: main 
04-11 18:12:17.130: E/AndroidRuntime(28082): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.indusa.stockapp/com.indusa.stockapp.stockListing.MyStock}: java.lang.NullPointerException 
04-11 18:12:17.130: E/AndroidRuntime(28082): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1659) 
04-11 18:12:17.130: E/AndroidRuntime(28082): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1675) 
04-11 18:12:17.130: E/AndroidRuntime(28082): at android.app.ActivityThread.access$1500(ActivityThread.java:121) 
04-11 18:12:17.130: E/AndroidRuntime(28082): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:943) 
04-11 18:12:17.130: E/AndroidRuntime(28082): at android.os.Handler.dispatchMessage(Handler.java:99) 
04-11 18:12:17.130: E/AndroidRuntime(28082): at android.os.Looper.loop(Looper.java:130) 
04-11 18:12:17.130: E/AndroidRuntime(28082): at android.app.ActivityThread.main(ActivityThread.java:3770) 
04-11 18:12:17.130: E/AndroidRuntime(28082): at java.lang.reflect.Method.invokeNative(Native Method) 
04-11 18:12:17.130: E/AndroidRuntime(28082): at java.lang.reflect.Method.invoke(Method.java:507) 
04-11 18:12:17.130: E/AndroidRuntime(28082): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912) 
04-11 18:12:17.130: E/AndroidRuntime(28082): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:670) 
04-11 18:12:17.130: E/AndroidRuntime(28082): at dalvik.system.NativeStart.main(Native Method) 
04-11 18:12:17.130: E/AndroidRuntime(28082): Caused by: java.lang.NullPointerException 
04-11 18:12:17.130: E/AndroidRuntime(28082): at com.indusa.stockapp.stockListing.MyStock.onCreate(MyStock.java:110) 

//====== 
//note 
//===== 

//在上面的代码列表视图我被dispalyed与文本框,按钮,文本框和按钮,如果在//在数据库中的加载时间如果有数量购买的任何数量然后我想//将R.drawable .buy_stock2更改为R.drawable.buy_stock_number特定的/ /按钮我无法区分按钮的基础上它们的ID ..无法改变按钮的背景图像中的自定义列表视图中的Android

+0

发布你的logcat输出也 – 2013-04-11 12:36:15

回答

0

而是使用buttons,你可以透过Android imagebutton它是容易处理的外观和感觉的控制提供了良好的设施...

+0

首先我的主要目的是改变背景如果特定股票的数量由用户其他明智的购买股票图像买了按钮应显示...即时得到的空指针异常,因为股市持续显示其按钮ID作为同一 – 2013-04-11 12:34:25

+0

这就是我要说的使用代替的ImageButton按钮的......它的工作原理类似于按钮... – 2013-04-11 12:35:53

+0

whehter我用按钮或图像按钮两者的工作原理相同 – 2013-04-11 12:36:37

0

您正在使用ListView和它不会为每个项目的新观点,它重用缓存的意见,所以如果你想改变列表项的一些属性,你应该做的是,在适配器方法

getView(final int position, View convertView, ViewGroup parent) 

和你可以通过位置参数识别您的项目。 更改列表视图数据后,你应该调用方法Adapter.notifyDataSetChanged()方法通知列表视图来重绘其项目,现在你的getView逻辑工作