Anonymní profil Tom – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Tom – Programujte.comAnonymní profil Tom – Programujte.com

 

Příspěvky odeslané z IP adresy 194.12.42.–

Tomáš
Java › Android OnToucListener pro c…
14. 2. 2015   #199243

Potřeboval bych udělat OnTouchListener pro celý fragment včetně všech view uvnitř. Jak by měla situace vypadat: fragment je na obrazovce do té doby, dokud s ním uživatel pracuje, poté by měl zmizet. 

Bohužel, listener funguje jen na vlastní fragment, nikoli na další view uvnitř, jako např.: ListView, co s tím? 

@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
		View view=inflater.inflate(R.layout.fragment_guest, container, false);	//create fragment from XML file
		
		view.setOnTouchListener(this);

// ...
		return view;
	}
	
altair222
PHP › Ošetření vstupu na sever
30. 1. 2015   #198572

Mám android aplikaci, která odesílá denně data na MySQL server, který je přijímá tímto způsobem:

<?php
new UpdateData ();
class UpdateData {
	private $db;
	
	function __construct() {
		if (isset ( $_GET ["json"] )) {
			$data = json_decode ( $_GET ["json"] );
			$this->insertInToDatabase ( $data , true);
		}
	}
	
	function insertInToDatabase($data) {
		require_once __DIR__ . '/db_connect.php';
		$this->db = new DB_CONNECT ();
		$this->db->connect ();
		
		foreach ( $data as $item ) { // foreach element in $arr
			echo "test";
			$string=json_encode($item);
			echo  $string;
			
			
			$name = $item->Name;
			$id = $item->GuestID;
			$email = $item->Email; // etc
			$arrival = $item->Arrival; // etc
			$days = $item->Days;// etc
			$bill = $item->Bill; // etc
			$tell = $item->Tel; // etc
			
			
			
			$result = mysql_query("INSERT INTO Guests(GuestID, Name, Email, Arrival, Days, Bill, Tel) VALUES('$id', '$name', '$email', '$arrival', '$days', '$bill', '$tell')");
			
			if($result){
				echo "success";
			}else{
				echo "problem";
			}
			
		}
		
	}
}
?>

Potřeboval bych ošetřit, aby jen tato aplikace mohla vkládat data, protože jinak by každý mohl zavolat příslušnou URL s potřebnými parametry a vložit tam balast o který nestojím.

Tom
Java › Otevření databáze z fragment…
30. 12. 2014   #197728

Takhle já předávám odkaz na databázi do fragmentu

inicializace fragmentu

public static GuestFragment newInstance(String guestName, Database database) {
	GuestFragment fragment = new GuestFragment();
	    Bundle bundle = new Bundle();
	    bundle.putString(GUEST_NAME_KEY, guestName);
            bundle.putSerializable(DATABASE_KEY, database);
	    fragment.setArguments(bundle);
	    bundle=null;

	    return fragment;
	}

MainActivity

fragmentTransaction = fragmentManager.beginTransaction();
	       Fragment fragment=GuestFragment.newInstance  	     (NameList.getItemAtPosition(position).toString(), databse);
	       fragmentTransaction.replace(R.id.content_layout, fragment);
	       fragmentTransaction.addToBackStack(null);	  	
fragmentTransaction.commit(); 

Ale abych mohl poslat objekt s databází pomocí bundle musím ho serializovat.

Tom
Java › Otevření databáze z fragment…
30. 12. 2014   #197725

Když už jsem to nakousli, je lepší předávat do fragmentu databázi v bundle pomocí Serializable, nebo jí tam znova inicializovat?

Tom
Java › Otevření databáze z fragment…
30. 12. 2014   #197722

Shrnuto na začátku app jsem otevřel databázi pomocí  

Database database=new Database(this);

Je to klasická databáze vytvořená pomocí SQLiteOpenHelper. Proměnou database jsem předával jako parametr každé části, která s ní pracuje, jako například dialogy, fragmenty, apod., je to nejlepší řešení?

Tom
Java › Otevření databáze z fragment…
30. 12. 2014   #197721
Tom
Java › Otevření databáze z fragment…
30. 12. 2014   #197707

Takže pokaždé, když budu něco vkládat nebo vybírat z databáze, použiji tento vzor a DB se mi poté i automaticky zavře?

Tom
Java › Otevření databáze z fragment…
30. 12. 2014   #197704

Takže se když otevřu databázi tímhle způsobem na více místech nebude se to hádat?

Tom
Java › Otevření databáze z fragment…
30. 12. 2014   #197701

Rád bych věděl jak korektně otevřít přístup k SQLite databázi z fragmentu, dialogu, apod.. mám pokaždé použít: ?

Database database=new Database(this);

A jak je to s jejím ukončením?

Tom
Java › V čem se programují webové s…
26. 12. 2014   #197561

V jakém jazyce se programují webové stránky pro android zařízení?

Hardware › Připojení 3 monitorů
6. 9. 2014   #193588

         Mám GIGABYTE HD 7870 Ultra Durable 2GB a potřebuji k ní připojit 3 monitory. Grafika má 1x DVI, 1x HDMI a 2x Mini DisplayPort. Mohu připojit první monitor přes DVI. druhý přes HDMI a třetí přes redukci z Mini DisplayPort na HDMI.

To samé potřebuji SAPPHIRE RADEON HD 5770 ta má 2x DVI 1x HDMI. Zase bych nakombinoval konektory? Stačil by výkon kancelářské práci? Kdyby nestačil, můžu udělat crossfire s další SAPPHIRE RADEON HD 5770.

Java › Android timer pro synchroniz…
25. 8. 2014   #193318

Vyjádřil jsem se špatně. Tablet se zhroutí úplně, takže je to na reklamaci. To si nemůžu dovolit. I když výběrem dražšího tabletu od osvědčené značky se dá značně snížit riziko, ale pořád tu je. V tomhle ohledu je nejhorší značka Prestigio podle mé zkušenosti. Samozřejmě, že typ tabletu beru určitě v potaz! 

    Nechce se mi DiskStation držet pořád zapnuto, nevidím v tom důvod. Ano je pravda, že do budoucna je Ukládání dat na DiskStation lepší. Ale pro naše požadavky si myslím, že řešení: databáze v tabletu a zálohovaní na serveru, je dostačující. Jelikož Synology neběží 24 hodin denně. Spíš funguje wake-on-lan.   

Java › Android timer pro synchroniz…
24. 8. 2014   #193307

Z čehož vyplývá, že tablet bude neustále připojen, takže energii řešit nemusím.

Java › Android timer pro synchroniz…
24. 8. 2014   #193306

Přesnější popis: Programuji Databázi pro zaznamenávání objednávek-čistě terminál pro číšníka. Než vytvářet složité firemní sítě napadlo mě použít tablet jako terminál, jelikož mě to přijde více kompaktnější, než terminál+obrazovka. Tablet se o vše bude starat sám a nebudu muset programovat složitou aplikaci. MySQL bude na Synology  DiskStation, bude sloužit čistě jen na zálohování dat 1x, 2x denně. Nechci udržovat stále spojení tablet MySQL. Na pár webech jsem se dočetl, že u tabletů zejména u těch levnějších je SQLite nestabilní, při případném zaseknutí tabletu může dojít ke ztrátě dat.

Java › Android timer pro synchroniz…
24. 8. 2014   #193302

Hledám timer pro android, který bych použil ke spuštění synchronizace SQLite s MySQL na webu? Už jsem koukal na AlarmClock, ale nevím, jestli je to to správné řešení. 

Java › Větvení metody pomocí parame…
23. 8. 2014   #193291

Na pár webech jsem viděl, že větví metodu pomocí String parametru.

příklad:

public String makeHttpRequest(String method, String data){
		if(method=="post"){
			//pošli data
			return null;
		}else if(method=="send"){
			//získej data
			return "asdsadf";
		}
		
		return "ERROR";
	}

Příklad: http://www.androidhive.info/2012/05/how-to-connect-android-with-php-mysql/, metoda: makeHttpRequest. Ptám se jestli jsou to dobré/špatné programátorské praktiky? Mě to přijde špatné, pro budoucí úpravy v programu.

Tom
PHP › Připojení k MySQL databázi
15. 8. 2014   #193042

#2 hlucheucho
Měl jsi pravdu, stačilo zadat pouze čistou IP! díky

Tom
PHP › Připojení k MySQL databázi
15. 8. 2014   #193039

Pokouším se připojit přes android k MySQL databázi. Dočetl jsem, že se nelze připojit přímo. Tak dělám PHP serv, který mi do android pošle dané data z MySQL. MySQL server mám na Synology Diskstation.  Při pokusu o připojení přes test.php se ohlásí error.

ERROR: Warning: mysql_connect(): php_network_getaddresses: gethostbyname failed. errno=0 in /volume1/web/servr/db_connect.php on line 28 Warning: mysql_connect(): php_network_getaddresses: gethostbyname failed. errno=0 in /volume1/web/servr/db_connect.php on line 28 php_network_getaddresses: gethostbyname failed. errno=0 Warning: mysql_close(): no MySQL-Link resource supplied in /volume1/web/servr/db_connect.php on line 42
db_config.php
<?php
 
/*
 * All database connection variables
 */
 
define('DB_USER', "root"); // db user
define('DB_PASSWORD', ""); // db password (mention your db password here)
define('DB_DATABASE', "test"); // database name
define('DB_SERVER', "http://192.168.1.6/phpMyAdmin/index.php"); // db server
?>
db_connect.php

<?php
 
/**
 * A class file to connect to database
 */
class DB_CONNECT {
 
    // constructor
    function __construct() {
        // connecting to database
        $this->connect();
    }
 
    // destructor
    function __destruct() {
        // closing db connection
        $this->close();
    }
 
    /**
     * Function to connect with database
     */
    function connect() {
        // import database connection variables
        require_once __DIR__ . '/db_config.php';
 
        // Connecting to mysql database
        $con = mysql_connect(DB_SERVER, DB_USER, DB_PASSWORD) or die(mysql_error());
 
        // Selecing database
        $db = mysql_select_db(DB_DATABASE) or die(mysql_error()) or die(mysql_error());
 
        // returing connection cursor
        return $con;
    }
 
    /**
     * Function to close db connection
     */
    function close() {
        // closing db connection
        mysql_close();
    }
 
}
 
?>
test.php

<?php
    //Create Database connection
    require_once __DIR__ . '/db_connect.php';
    $db = new DB_CONNECT();
    if (!$db) {
        die('Could not connect to db: ' . mysql_error());
    }
    mysql_select_db("Data")or die("cannot select DB");

    //Replace * in the query with the column names.
    $result = mysql_query("SELECT * FROM customer", $db);
 
?>
libor
Java › Activita neraguje po spuštěn…
9. 5. 2014   #189963

Potřeboval jsem přenést do fragmentu object. Použil jsem k tomu bundle.putSerializable(). přenášení dat do fragmentu fungovalo perfektně, ale když jsem potom spustil jinou Activitu nastal error:

 Eclipse mi ukáže, že je problém v na tomto řádku: Bundle--> parcel.restoreAllowFds(oldAllowFds);

výpis z debugeru

test [Android Application]	
	DalvikVM [localhost:8603]	
		Thread [<1> main] (Suspended (exception RuntimeException))	
			<VM does not provide monitor information>	
			Bundle.writeToParcel(Parcel, int) line: 1702	
			Parcel.writeBundle(Bundle) line: 636	
			ActivityManagerProxy.activityStopped(IBinder, Bundle, Bitmap, CharSequence) line: 2467	
			ActivityThread$StopInfo.run() line: 3098	
			Handler.handleCallback(Message) line: 733	
			ActivityThread$H(Handler).dispatchMessage(Message) line: 95	
			Looper.loop() line: 136	
			ActivityThread.main(String[]) line: 5017	
			Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]	
			Method.invoke(Object, Object...) line: 515	
			ZygoteInit$MethodAndArgsCaller.run() line: 779	
			ZygoteInit.main(String[]) line: 595	
			NativeStart.main(String[]) line: not available [native method]	
		Thread [<10> Binder_2] (Running)	
		Thread [<9> Binder_1] (Running)	

Zdrojový kód:

mainActivity

public class MainActivity extends Activity implements Serializable {
	
	
	private static final long serialVersionUID = 1L;
	private List<String> arrayOfGuest;	//hold thing which are in listView
	private ListView NameList;
	
	private FragmentManager fragmentManager;
	private FragmentTransaction fragmentTransaction;
	private ArrayAdapter<String> arrayAdapter;
	
	private Database database;
	

	/*****************************************************
     * OnCreate method
     *****************************************************/
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		//this.deleteDatabase("Database.db");
		
		setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
		
		Init();
		
				
		//Set default fragment.
		fragmentTransaction = fragmentManager.beginTransaction();	//Start of transaction.
			Fragment fragment=new DefaultFragment();
			fragmentTransaction.add(R.id.content_layout, fragment);	// add fragment to layout.
		fragmentTransaction.commit();	//end of transaction.
		
		//Listener for NameList (ListView). The listener change fragments on screen.
		NameList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
	        @Override
	        public void onItemClick(AdapterView<?> arg0, View view, int position, long id) {
	        	
	        	
	        	fragmentTransaction = fragmentManager.beginTransaction();	//Start of transaction.
	        		Fragment fragment=GuestFragment.newInstance(database, NameList.getItemAtPosition(position).toString(), MainActivity.this);
	        		fragmentTransaction.replace(R.id.content_layout, fragment);
	        		fragmentTransaction.addToBackStack(null);	 //add fragment tag (id) for latest editing.  	
				fragmentTransaction.commit(); //end of transaction.
				
	        }
	    });
		
		//create long listener for deleting guest
		NameList.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
			@Override
			public boolean onItemLongClick(AdapterView<?> arg0, View arg1, final int position, long arg3) {
				
				//create dialog for deleting guest
				AlertDialog.Builder dialogBuilder= new AlertDialog.Builder(MainActivity.this);
					dialogBuilder.setTitle("Potvdit smazání?");
					dialogBuilder.setPositiveButton("Smazat", new DialogInterface.OnClickListener() {
						@Override
						public void onClick(DialogInterface dialog, int which) {
							database.DeleteGuest(NameList.getItemAtPosition(position).toString(), 0);
							updateListView();	//update array with name of guest
							setDefaultFragment();
						}
					});			
					dialogBuilder.setNegativeButton("Zrušit", new DialogInterface.OnClickListener() {
						@Override
				        public void onClick(DialogInterface dialog, int which) {
							Toast.makeText(getApplicationContext(), "Host nebyl smazán.", Toast.LENGTH_LONG).show();   	
				        }
				    });
					dialogBuilder.show();

				return false;
			}
		});
		
	}
	
	@Override
	protected void onPause() {
		super.onPause();
		database.close();	//close database because another activity will be using it
	}
	
	@Override
	public boolean onMenuItemSelected(int featureId, MenuItem item) {
	    int itemId = item.getItemId();
	    switch (itemId) {
	    	case R.id.actin_bar_options_list_of_food:
	    		//start activity with offer
	    		Intent intent = new Intent(this, OfferActivity.class);
	    		startActivity(intent);
	    		break;
	    	case R.id.actin_bar_options_app:
	    		break;
	    }

	    return true;
	}
	
	/*****************************************************
     * Method init all staff
     *****************************************************/
	private void Init(){
		database=new Database(this);
		fragmentManager = getFragmentManager();
		NameList=(ListView) findViewById(R.id.list_view);
		
		arrayOfGuest = new ArrayList<String>();
		updateListView();	//update ListView
	}
	
	
	/*****************************************************
     * Method for add new guest, it will show a dialog with writing name 
     *****************************************************/
	public void AddGuest(View view){
		AlertDialog.Builder dialogBuilder= new AlertDialog.Builder(MainActivity.this);	//create dialog builder
		
		final EditText ET=new EditText(this);
		
		dialogBuilder.setTitle("Jméno hosta?");	// set title
		dialogBuilder.setView(ET);	//add EditText
		
		//Positive button
        dialogBuilder.setPositiveButton("Přidat", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
            	database.AddGuest(ET.getText().toString());	// add guest to database
            	updateListView();	//update array with name of guest
            }
        });
        
        //negative button
        dialogBuilder.setNegativeButton("Zrušit", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(getApplicationContext(), "Host Nepřidán", Toast.LENGTH_LONG).show();   	
            }
        });
        
        dialogBuilder.show();	//show the dialog
	}
	
	/*****************************************************
     * Method add ActionBar
     *****************************************************/
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		MenuInflater mif=getMenuInflater();
		mif.inflate(R.menu.main_x, menu);
		return super.onCreateOptionsMenu(menu);
	}
	
	/*****************************************************
     * Method, which take guest from database and paste it to array 
     *****************************************************/
	public void updateListView(){
		arrayOfGuest.clear();
		ArrayList<HashMap<String, String>> Guests=database.GetAllGuests();
		
		for(HashMap<String, String> x:Guests)
			arrayOfGuest.add(x.get(database.GUEST_NAME));
		
		arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arrayOfGuest );
		NameList.setAdapter(arrayAdapter);
	}
	
	public void setDefaultFragment(){
		//Set default fragment.
		fragmentTransaction = fragmentManager.beginTransaction();	//Start of transaction.
			Fragment defaultFragment=new DefaultFragment();
			fragmentTransaction.replace(R.id.content_layout, defaultFragment);	// add fragment to layout.
			defaultFragment=null;
		fragmentTransaction.commit();	//end of transaction.
	}
	
}

GuestFragment

package com.wesikprograming.cisnik;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Fragment;
import android.content.DialogInterface;
import android.database.DataSetObserver;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import com.wesikprograming.cisnik.database.Database;
import com.wesikprograming.cisnik.listViewAdapters.OrderListViewAdapter;

public class GuestFragment extends Fragment{
	
	private TextView nameTextView;
	private ListView orderListView;
	private String guestName;
	private Button addButton, payButton;
	private Database database;
	private MainActivity mainActivity;
	private boolean isActived=false;
	
	private static final String DATABASE_KEY = "describable_key";
	private static final String GUEST_NAME_KEY = "guest_name_key";
	private static final String MEIN_ACTIVITY_KEY = "main_activity";
	
	/*****************************************************
     * create fragment and put inside bundle variable. Reason why I am doing it here with static method, is that I have here final recognize String name like DATABASE_KEY
     ***************************************************/
	public static GuestFragment newInstance(Database database, String guestName, MainActivity mainActivity) {
		GuestFragment fragment = new GuestFragment();
	    Bundle bundle = new Bundle();
	    bundle.putSerializable(DATABASE_KEY, database);
	    bundle.putString(GUEST_NAME_KEY, guestName);
	    bundle.putSerializable(MEIN_ACTIVITY_KEY, mainActivity);
	    fragment.setArguments(bundle);
	    bundle=null;

	    return fragment;
	}

	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
		View view=inflater.inflate(R.layout.guest_fragment, container, false);	//create fragment from XML file
		
		//put data to variable from bundle
		database=(Database) getArguments().getSerializable(DATABASE_KEY);
		mainActivity=(MainActivity) getArguments().getSerializable(MEIN_ACTIVITY_KEY);
		guestName= getArguments().getString(GUEST_NAME_KEY);
				
		nameTextView=(TextView) view.findViewById(R.id.guest_name_id);
		orderListView=(ListView) view.findViewById(R.id.guest_list_view);
		addButton=(Button)view.findViewById(R.id.guest_fragment_add_button);
		payButton=(Button)view.findViewById(R.id.guest_fragment_pay_button);
		
		nameTextView.setText(guestName);
		UpdateListView();	//set adapter for listView
		
		//add item to order dialog
		addButton.setOnClickListener(new View.OnClickListener() {
	         public void onClick(View v) {
	        	 
	        	 AlertDialog.Builder dialogBuilder= new AlertDialog.Builder(getActivity());
	        	 dialogBuilder.setTitle("přidat položku");
	        	 
				 //create adapter for listView in dialog
				 final ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_expandable_list_item_1);	//create adapter for dialog
				 adapter.addAll(database.getAllOffersItemsName());	//add items to adapter
				 
				 dialogBuilder.setAdapter(adapter, new DialogInterface.OnClickListener() {			//set adapter in dialog a make listener
					 public void onClick(DialogInterface dialog, int position) {
						 if(!database.AddItemToOrders(database.GetGuestID(guestName), database.GetItemID(adapter.getItem(position).toString())))
							 Toast.makeText(getActivity(), "Položka se již v seznamu vyskytuje. Ale byla zařazena do objednávek", Toast.LENGTH_LONG).show();
						 else
							 Toast.makeText(getActivity(), "Položka byla přidána do seznamu", Toast.LENGTH_LONG).show();
						 		UpdateListView();
					 }
				 });
				 
	        	 dialogBuilder.setPositiveButton("Zrušit", new DialogInterface.OnClickListener() {
	        		 @Override
	        		 public void onClick(DialogInterface dialog, int which) {
	        			 
	        		 }
	        	 });			
	        	 dialogBuilder.setNegativeButton("Položka není v seznamu", new DialogInterface.OnClickListener() {
	        		 @Override
	        		 public void onClick(DialogInterface dialog, int which) {
	        			 
	        		 }
	        	 });
	        	 dialogBuilder.show();
	         }
	    });
		
		//charge order
		payButton.setOnClickListener(new View.OnClickListener() {
	         public void onClick(View v) {
	            Toast.makeText(getActivity(), "test", Toast.LENGTH_LONG).show();
	         }
	    });
		
		
		return view;
	}
	
	
	/*****************************************************
     * set things list view in fragment 
     ***************************************************/
	public void UpdateListView(){
		List<OrderItem>  list=new ArrayList<OrderItem>();	// this hold information about orders
		
		
		ArrayList<HashMap<String, Integer>> Guests=database.GetGuestOffer(database.GetGuestID(guestName));	//get guest order
		
		//create items for listView. Take them form database
		for(HashMap<String, Integer> x: Guests){
			list.add(new OrderItem(database.GetItemNameByID(x.get(database.ITEM_ID)), x.get(database.ITEM_COUNT)));
		}
		
		//create custom adapter for listView  
		OrderListViewAdapter GLVA=new OrderListViewAdapter(getActivity(), list, database, guestName, this);
		orderListView.setAdapter(GLVA);
	}
	@Override
	public void onStart() {
		super.onStart();
		UpdateListView();	
	}

}

OfferActivity

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;

import com.wesikprograming.cisnik.database.Database;
import com.wesikprograming.cisnik.listViewAdapters.OfferListViewAdapter;

public class OfferActivity extends Activity {

	
	private ListView OfferListView;
	private Database database;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		setContentView(R.layout.offer_activity);

		init();
		UpdataListView();
	}
	
	public void init(){
		OfferListView = (ListView) findViewById(R.id.offer_listview);
		database = new Database(getApplicationContext());   //get database instance 
	}

	public void UpdataListView() {
		List<OfferItem> list = new ArrayList<OfferItem>();	//list for items for listView
	
		ArrayList<HashMap<String, String>> OfferArrayList = database.GetOffer();	//get guest offer form databse
		
		//fill list with items from database
		for (HashMap<String, String> x : OfferArrayList) {
			list.add(new OfferItem(x.get(database.ITEM_NAME), x.get(database.ITEM_PRICE)));
		}
		
		//set custom adapter to listView
		OfferListViewAdapter OFLA=new OfferListViewAdapter(this, list);
		OfferListView.setAdapter(OFLA);
	}
	
	public void addItem(View view){
		final View dialogView = this.getLayoutInflater().inflate(R.layout.offer_add_dialog, null);
		
		AlertDialog.Builder dialogBuilder= new AlertDialog.Builder(this);
		
		dialogBuilder.setTitle("Přidat položku do nabídky");
		dialogBuilder.setView(dialogView);
		
		
		dialogBuilder.setPositiveButton("Přidat", new DialogInterface.OnClickListener() {
			@Override
			public void onClick(DialogInterface dialog, int which) {
				EditText name=(EditText) dialogView.findViewById(R.id.offer_dialog_name);
				EditText price=(EditText) dialogView.findViewById(R.id.offer_dialog_price);

				if(name.getText().toString().trim().length() > 0 && price.getText().toString().trim().length() > 0){
					database.addItemToOffer(name.getText().toString(), Integer.parseInt(price.getText().toString()), 0);
					UpdataListView();
					Toast.makeText(getApplicationContext(), "Položka přidána", Toast.LENGTH_LONG).show();
				}
				else
					Toast.makeText(getApplicationContext(), "Položka nebyla přidána!", Toast.LENGTH_LONG).show();

			}
		});
		
		dialogBuilder.setNegativeButton("Zrušit", new DialogInterface.OnClickListener() {
	           @Override
	           public void onClick(DialogInterface dialog, int which) {
	               Toast.makeText(getApplicationContext(), "Položka nebyla přidána!", Toast.LENGTH_LONG).show();   	
	           }
	    });
		
		dialogBuilder.show();
	}

}
libor
Java › Zvýšení hodnoty v databázi o 1
3. 5. 2014   #189801

Našel jsem řešení kód místo otazníku:

String Query="UPDATE "+ORDERS_TABLE+" SET "+ITEM_COUNT+"="+ITEM_COUNT+"+1"+" WHERE "+GUEST_ID+"='"+ guestID +"'"+" AND "+ITEM_ID+"='"+ itemID +"'";
			database.execSQL(Query);
libor
Java › Zvýšení hodnoty v databázi o 1
3. 5. 2014   #189796

Mám metodu, jejíž účelem je poznat zda je již položka v objednávce, nebo ne. Pokud už položka existuje zvedne se počet kusů o 1. Pokud neexistuje přidá položku do seznamu objednávek. Mám problém s zvýšením čísla o  1. Nenapadá mě žádné rozumné řešení na místo otazníků.

	public void AddItemToOrders(int guestID, int itemID){
		SQLiteDatabase database = this.getWritableDatabase();
		String selectQuery = "SELECT * FROM "+ORDERS_TABLE+" WHERE "+GUEST_ID+"='"+ guestID +"'"+" AND "+ITEM_ID+"='"+ itemID +"'";
		
		Cursor cursor = database.rawQuery(selectQuery, null);
		
		if (cursor.moveToFirst()) {		//pokud záznam existuje přičte k ITEM_COUNT +1
		   //????????
		} else {		//pokud neexistuje vytvoří položku
			ContentValues values = new ContentValues();
			
			values.put(GUEST_ID, guestID);
			values.put(ITEM_ID, itemID);
			values.put(ITEM_COUNT, 1);
			
			database.insert(ORDERS_TABLE, null, values);
			database.close();
		}
		
	}
tom
Java › Návrh na Android Layout
1. 5. 2014   #189732

Přišel jsem na řešení. tento příkaz zarovná widgetu doprava:

android:layout_alignParentRight="true"
tom
Java › Návrh na Android Layout
1. 5. 2014   #189730

Potřeboval bych pomoci s vytvořením tohoto layoutu viz obrázek. Nevím jak udělat aby TextView a Button byly na okrajích obrazovky. Myslím si, že je k tomu nejlepší RelativeLayout.

Připojen obrázek.

libor
Java › SQLite dynamické vytváření t…
21. 4. 2014   #189453

Já mám List View, kde jsou zobrazeny názvy hostů, když potřebuji něco o hostovi, tak ho hledám pomocí jména nikoli ID, protože je to jednodušší. Stačí z ListView vzít jméno a prohledat databázi.   

libor
Java › SQLite dynamické vytváření t…
21. 4. 2014   #189451

Při programování mě napadal myšlenka, je dobré používat ID? kdybych používal rovnou jména, ušetřilo by mě to spoustu práce?

libor
Java › Android: volání metody v fra…
20. 4. 2014   #189440

Edit: Error, který jsem objevil je, že  "gf" je null.

libor
Java › Android: volání metody v fra…
20. 4. 2014   #189439

Jedinou mnou známou možností jak něco změnit něco v fragmentu, je mít v něm metodu, která to vykoná. Už jsem snad prozkoušel všechny možností, abych jí zavolal. Chtěl bych změnit TextView guest_name_id.

MainActivity 

@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Init();
		
		//Set default fragment.
		fragmentTransaction = fragmentManager.beginTransaction();	//Start of transaction.
			Fragment defaultFragment=new DefaultFragment();
			fragmentTransaction.add(R.id.content_layout, defaultFragment);	// add fragment to layout.
			defaultFragment=null;
		fragmentTransaction.commit();	//end of transaction.
		
		
		//Listener for NameList (ListView). The listener change fragments on screen.
		NameList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
	        @Override
	        public void onItemClick(AdapterView<?> arg0, View view, int position, long id) {
	        	
	        	final String TAG="tag";
	        	
	        	fragmentTransaction = fragmentManager.beginTransaction();	//Start of transaction.
	        		fragmentTransaction.replace(R.id.content_layout, new GuestFragment(), TAG);
	        		fragmentTransaction.addToBackStack(null);	 //add fragment tag (id) for latest editing.  	
				fragmentTransaction.commit(); //end of transaction.
					
				GuestFragment gf= (GuestFragment)getFragmentManager().findFragmentByTag(TAG);

				gf.setName("SDsd");
	        	
	        
	
	        	
	        }
	    });

 fragment class

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.TextView;

public class GuestFragment extends Fragment {
	
	private TextView nameTextView;
	private ListView orderListView;
	

	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
		View view=inflater.inflate(R.layout.guest, container, false);	//create fragment from XML file
				
		nameTextView=(TextView) view.findViewById(R.id.guest_name_id);
		return view;
	}
	
	public void setName(String name){
		nameTextView.setText(name);
	}
}

 

libor
Java › SQLite dynamické vytváření t…
18. 4. 2014   #189398

"autoincrement" přidělí řádku číslo a to už se pak nikdy nezmění, i kdy bych vymazal řádek uprostřed tabulky?

libor
Java › SQLite dynamické vytváření t…
18. 4. 2014   #189392

Já se zatím musím držet při zemi s SQLite jsem začal před týdnem :DD. Učím se tak nějak sám, moc knížek na Android není a v Angličtině se odborná literatura čte blbě, takže vše, co umím, mám z Stackoverflow nebo z YT. 

libor
Java › SQLite dynamické vytváření t…
18. 4. 2014   #189390

#15 Kit
To není vůbec špatný nápad založit v nabídce další sloupec, kde bude 0 nebo 1 bude určovat zobrazení v celkové nabídce. Díky moc všem teď to už snad dám do kupy.   

libor
Java › SQLite dynamické vytváření t…
18. 4. 2014   #189387

Udělám to takto, sice budu muset vymyslet něco na vytváření ID, ale to nevadí, alespoň se naučím něco nového.

Připojen obrázek.

libor
Java › SQLite dynamické vytváření t…
17. 4. 2014   #189363

Dělám aplikaci na zaznamenávání objednávek do penzionu. Aplikace by měla vypadat následovně. Seznam ubytovaných hostů, kliknu na hosta, otevře se mi nabídka pokrmů, nápojů plus tam bude tlačítko na přidání mimořádné objednávky. Mimořádná objednávka je něco co není předem specifikováno Př: narozeninový dort. Já nechci tuto mimořádnou věc přidat do celkové nabídky, ale pouze do jedné objednávky. Z toho vyplývá, že nemohu použít nějakou jednotnou tabulku pro všechny zákazníky.

libor
Java › SQLite dynamické vytváření t…
17. 4. 2014   #189361

Ale když každá objednávka bude diametrálně odlišná, čili nebude se dát navázat na nějakou obecnou tabulku, tak v tom případě mi nezbývá než vytvořit další databázi, která se přizpůsobí dané objednávce? Pouze kdyby každá objednávka měl přesně dané parametry tak by se dal využít tebou popsaný vzorec. Díky za pomoc ;). Doufám, že takto to je správně? 

libor
Java › SQLite dynamické vytváření t…
17. 4. 2014   #189352

Úplně jednoduše, takže když budu chtít přidat zákazníka s objednávkami, tak pro něj vytvořím zcela novou databázi nikoli tabulku? 

libor
Java › SQLite dynamické vytváření t…
17. 4. 2014   #189346

Potřeboval bych pomoci s návrhem databáze v Androidu. Moje databáze má dvě základní části: seznam poskytovaných produktů(coal, pivo, chipsy). A pak tabulka s zákazníkem, kde by byly všechny jeho objednávky. počet tabulek se zákazníky se bude pohybovat okolo 40. Jenže jak jsem tak Zjistil tak v SQLite nejde dynamicky vytvářet tabulky. Jak tento problém vyřešit? 

Honza
Java › Eclipse Android debuging
17. 4. 2014   #189341

Když jsem používal eclipse pro Javu, tak mi debuger ukazoval poslední zkompilovaný řádek kódu. Ale Android Eclipse toto nedělá, dá se to nastavit?

Honza
Java › ListView nereaguje při použi…
5. 4. 2014   #188975

Přišel jsem na řešení: Je nutno ListView dát do samostatného layoutu a informace do něj vložit přes externě.

package com.example.menitelnefragmenty;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends Activity {
	
	private final static String[] items={"item 1", "item 2", "item 3", "item 4", "item 5"};

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		ListView LV=(ListView) findViewById(R.id.list_view);
		
		LV.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items));
		
	}
	
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:baselineAligned="false"
    android:orientation="horizontal">
    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:orientation="horizontal" >
        
       	<ListView
        	android:id="@+id/list_view"
       		android:layout_width="match_parent"
        	android:layout_height="wrap_content" >
    	</ListView>
    	
    </LinearLayout>
   
    
    <FrameLayout
        android:id="@+id/content_layout"
        android:layout_height="match_parent"
        android:layout_width="0dp"
        android:layout_weight="3">
    </FrameLayout>

</LinearLayout>
Honza
Java › ListView nereaguje při použi…
5. 4. 2014   #188974

Dělám aplikaci, které bude vypadat asi následovně: vlevo bude ListView s jmény a vpravo se budou měnit informace po kliknutí na jméno. Dělám to za pomocí fragmentů. Ale když použiji layout_weight, abych rozdělil obrazovku, začne mně eclipse hlásit SOURCE NOT FOUND. Zkoušel jsem rozdělit obrazovku přímočaře pomocí dp, px, vše pak kupodivu funguje. Když vás napadne jiné lepší řešení, prosím napište ho sem. 

 Java code

package com.example.menitelnefragmenty;

import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends ListActivity {
	
	private final static String[] items={"item 1", "item 2", "item 3", "item 4", "item 5"};

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items));
		
	}
	
	 @Override
	    public void onListItemClick(ListView l, View v, int position, long id) {
	        super.onListItemClick(l, v, position, id);
	        Toast.makeText(this, "You clicked on first list, item: "+ ++position, Toast.LENGTH_LONG).show();
	}

}

XML

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:baselineAligned="false"
    android:orientation="horizontal">
    

    <ListView
        android:id="@+id/list_view"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="match_parent" >

    </ListView>
    
    <FrameLayout
        android:id="@+id/content_layout"
        android:layout_height="match_parent"
        android:layout_width="0dp"
        android:layout_weight="3">
    </FrameLayout>

</LinearLayout>
wesík
Java › Android - EditText vracia pr…
23. 1. 2014   #186623

System.out.println() v androidu nefunguje ;)

wesík
Java › Algoritmus na generování mapy
4. 1. 2014   #185940

Potřeboval bych pomoci s algoritmem, ke mám čtvercovou síť 100x100 a je nutno do ní vygenerovat mapu s 4 různými druhy krajiny. Mám 4 barvy čtverců. Já jsem zkoušel to udělat nějak přes Random, ale poté krajina nevypadá celistvá. 

vesík
Java › Android: Vysvětlení vnitřníc…
22. 12. 2013   #185534

Nikde jsem nenašel kolonku Android tak píšu do Javy, jelikož se android programuje v Javě. POtřeboval bych vysvětlit vnitřní strukturu operačního systém, metody onCreate, onCreateOptionsMenu. Tyto metody má každá aktivita, a která je ta hlavní?

vesík
› Nové stabilní téma Android?
22. 12. 2013   #185533

Přidal bych stále téma android. docela rád bych se na něco zeptal. I když android je vlastně java, tak má spoustu odlišností.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý