Skip to content
Snippets Groups Projects
Commit fe0b8f80 authored by kaller01's avatar kaller01
Browse files

lab3 done

parent cdd256e3
Branches master
No related tags found
No related merge requests found
...@@ -10,6 +10,7 @@ import android.util.AttributeSet; ...@@ -10,6 +10,7 @@ import android.util.AttributeSet;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.BaseAdapter; import android.widget.BaseAdapter;
import android.widget.EditText; import android.widget.EditText;
...@@ -29,6 +30,7 @@ import com.google.gson.Gson; ...@@ -29,6 +30,7 @@ import com.google.gson.Gson;
import java.lang.reflect.Array; import java.lang.reflect.Array;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
public class InteractiveSearch extends androidx.appcompat.widget.AppCompatEditText { public class InteractiveSearch extends androidx.appcompat.widget.AppCompatEditText {
Context context; Context context;
...@@ -53,6 +55,12 @@ public class InteractiveSearch extends androidx.appcompat.widget.AppCompatEditTe ...@@ -53,6 +55,12 @@ public class InteractiveSearch extends androidx.appcompat.widget.AppCompatEditTe
init(context); init(context);
} }
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
//super.onMeasure(widthMeasureSpec, heightMeasureSpec);
setMeasuredDimension(1000, 200);
}
private void init(Context context) { private void init(Context context) {
adapter = new myAdapter(context); adapter = new myAdapter(context);
// System.out.println("ADAPTER " + adapter.getCount()); // System.out.println("ADAPTER " + adapter.getCount());
...@@ -79,6 +87,13 @@ public class InteractiveSearch extends androidx.appcompat.widget.AppCompatEditTe ...@@ -79,6 +87,13 @@ public class InteractiveSearch extends androidx.appcompat.widget.AppCompatEditTe
} }
}); });
listPopupWindow.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
setText((String) adapter.getItem(position));
}
});
} }
private int getID() { private int getID() {
...@@ -87,7 +102,7 @@ public class InteractiveSearch extends androidx.appcompat.widget.AppCompatEditTe ...@@ -87,7 +102,7 @@ public class InteractiveSearch extends androidx.appcompat.widget.AppCompatEditTe
private void search(String s) { private void search(String s) {
String url = "https://andla.pythonanywhere.com/getnames/" + getID() + "/" + s; String url = "https://andla.pythonanywhere.com/getnames/" + getID() + "/" + s;
System.out.println(url); //System.out.println(url);
doVolleyStuff(url); doVolleyStuff(url);
} }
...@@ -106,7 +121,6 @@ public class InteractiveSearch extends androidx.appcompat.widget.AppCompatEditTe ...@@ -106,7 +121,6 @@ public class InteractiveSearch extends androidx.appcompat.widget.AppCompatEditTe
listPopupWindow.show(); listPopupWindow.show();
} }
} }
}, new Response.ErrorListener() { }, new Response.ErrorListener() {
@Override @Override
...@@ -121,6 +135,7 @@ public class InteractiveSearch extends androidx.appcompat.widget.AppCompatEditTe ...@@ -121,6 +135,7 @@ public class InteractiveSearch extends androidx.appcompat.widget.AppCompatEditTe
public class myAdapter extends BaseAdapter { public class myAdapter extends BaseAdapter {
ArrayList<String> list = new ArrayList<String>(); ArrayList<String> list = new ArrayList<String>();
Context context; Context context;
private int n=5;
public myAdapter(Context c) { public myAdapter(Context c) {
this.context = c; this.context = c;
...@@ -142,7 +157,12 @@ public class InteractiveSearch extends androidx.appcompat.widget.AppCompatEditTe ...@@ -142,7 +157,12 @@ public class InteractiveSearch extends androidx.appcompat.widget.AppCompatEditTe
} }
public void changeList(ArrayList<String> list) { public void changeList(ArrayList<String> list) {
this.list = list; //System.out.println(n);
if (list.size() < n)
this.list = list;
else
this.list = new ArrayList<String>(list.subList(0, n));
notifyDataSetChanged(); notifyDataSetChanged();
} }
...@@ -150,31 +170,13 @@ public class InteractiveSearch extends androidx.appcompat.widget.AppCompatEditTe ...@@ -150,31 +170,13 @@ public class InteractiveSearch extends androidx.appcompat.widget.AppCompatEditTe
public View getView(int position, View convertView, ViewGroup parent) { public View getView(int position, View convertView, ViewGroup parent) {
String name = (String) getItem(position); String name = (String) getItem(position);
//
// System.out.println(name);
//
// if (convertView == null) {
// convertView = new TextView(context);
// }
//
// TextView tmp = (TextView) convertView;
// tmp.setText(name);
//
// return convertView;
// System.out.println();
// TextView tmp = new TextView(context);
// tmp.setText(name);
Text tmp = new Text(context); Text tmp = new Text(context);
tmp.setText(name); tmp.setText(name);
return tmp; return tmp;
// return new Text(context, name);
// return tmp;
} }
} }
private static class Resonse { private static class Resonse { //ska vara response
private int id; private int id;
private ArrayList<String> result; private ArrayList<String> result;
...@@ -187,7 +189,7 @@ public class InteractiveSearch extends androidx.appcompat.widget.AppCompatEditTe ...@@ -187,7 +189,7 @@ public class InteractiveSearch extends androidx.appcompat.widget.AppCompatEditTe
} }
public void setResult(ArrayList<String> result) { public void setResult(ArrayList<String> result) {
this.result = result; this.result = result;
} }
public ArrayList<String> getResult() { public ArrayList<String> getResult() {
...@@ -195,53 +197,55 @@ public class InteractiveSearch extends androidx.appcompat.widget.AppCompatEditTe ...@@ -195,53 +197,55 @@ public class InteractiveSearch extends androidx.appcompat.widget.AppCompatEditTe
} }
} }
public class Text extends View { public class Text extends View {
Context c;
Paint myPaint; Paint myPaint;
String text; String text;
public void setText(String text){
this.text = text;
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(40, 40);
}
public Text(Context context) { public Text(Context context) {
super(context); super(context);
this.c = context;
init();
} }
public Text(Context context, @Nullable AttributeSet attrs) { public Text(Context context, @Nullable AttributeSet attrs) {
super(context, attrs); super(context, attrs);
this.c = context;
init(); init();
} }
public Text(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { public Text(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr); super(context, attrs, defStyleAttr);
this.c = context;
init(); init();
} }
public Text(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { public Text(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes); super(context, attrs, defStyleAttr, defStyleRes);
this.c = context;
init(); init();
} }
public void init() { private void init() {
// System.out.println(text);
myPaint = new Paint(Paint.ANTI_ALIAS_FLAG); myPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
myPaint.setColor(Color.RED); myPaint.setColor(Color.BLACK);
myPaint.setTextSize(60f);
}
public void setText(String text) {
this.text = text; this.text = text;
} }
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
//super.onMeasure(widthMeasureSpec, heightMeasureSpec);
setMeasuredDimension(800, 100);
}
@Override @Override
protected void onDraw(Canvas canvas) { protected void onDraw(Canvas canvas) {
System.out.println(text);
super.onDraw(canvas); super.onDraw(canvas);
canvas.drawText(text, 0, 0, myPaint); canvas.drawText(text, 10, 60, myPaint);
} }
} }
......
package com.example.lab3;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ListPopupWindow;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.Array;
import java.net.URL;
public class InteractiveSearchOld extends FrameLayout {
private Context context;
private int currentID = 0;
private String result = "";
private Paint myPaint;
public InteractiveSearchOld(@NonNull Context context) {
super(context);
init(context);
}
public InteractiveSearchOld(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init(context);
}
public InteractiveSearchOld(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}
public InteractiveSearchOld(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
init(context);
}
private void init(Context context){
LayoutInflater infaltor = (LayoutInflater) context.
getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = infaltor.inflate(R.layout.interactivesearch,null);
EditText input = v.findViewById(R.id.field);
final ListPopupWindow listPopupWindow = new ListPopupWindow(context);
listPopupWindow.setAnchorView(input);
// listPopupWindow.setAdapter(new ArrayAdapter<String>());
listPopupWindow.setHeight(300);
listPopupWindow.setWidth(300);
listPopupWindow.show();
// this.addView(ListPopupWindow);
input.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
search(s+"");
}
@Override
public void afterTextChanged(Editable s) {
}
});
// System.out.println(ourInput.getText());
addView(v);
this.context = context;
myPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
myPaint.setColor(Color.RED);
}
private int getID(){
return currentID++;
}
private void search(String s){
String url = "https://andla.pythonanywhere.com/getnames/"+getID()+"/"+s;
System.out.println(url);
doVolleyStuff(url);
}
private void doVolleyStuff(String url){
RequestQueue queue = Volley.newRequestQueue(this.context);
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
System.out.println(response);
result = response;
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});
queue.add(stringRequest);
}
protected void onDraw(Canvas canvas) {
System.out.println("hejj!!!");
super.onDraw(canvas);
canvas.drawText(result,10,30,myPaint);
}
}
package com.example.lab3;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import androidx.annotation.Nullable;
public class Overlay extends View {
public Overlay(Context context) {
super(context);
}
public Overlay(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public Overlay(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public Overlay(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
}
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
<com.example.lab3.InteractiveSearch <com.example.lab3.InteractiveSearch
android:layout_width="409dp" android:layout_width="409dp"
android:layout_height="354dp" android:layout_height="354dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment