Can Any One say how to do This In JAVA

At least use an IDE at the very beginning of the development :man_facepalming:
The Java syntax is not correct.

@JVFACTSAPPDEVELPER Don’t just copy-paste code.

1 Like

Try my code

First Import all of these

import java.util.ArrayList;
import com.google.appinventor.components.runtime.util.YailList;

Second, try my code

    @SimpleFunction(description = "Sample Function Generated by Niotron")
    public String Get(String tableName, YailList Coloums, YailList values) {
        ArrayList listColoums = Coloums.toArray();
        ArrayList listValues = values.toArray();
        String data ="";
        for(String item : listColoums) {  
            if (listColoums.indexOf(item) == listColoums.size()) {
                data = data + "\'" + item + "\'  = " + "\'" + listValues.get(listColoums.indexOf(item)) + "\'";
            } else {
                data = data + "\'" + item + "\'  = " + "\'" + listValues.get(listColoums.indexOf(item)) + "\',";
            }
        }
        return "INSERT INTO `" + tableName + "` SET " + data;
    }
3 Likes

Wow amazing code @Salman_Dev

3 Likes

Error

Started Compiling Project ForEachItemInTheList
Buildfile: /compiler/androidX/build.xml

javac:
[mkdir] Created dir: /compiler/androidX/build/ZDFGV/classes
[javac] Compiling 1 source file to /compiler/androidX/build/ZDFGV/classes
[javac] warning: [options] bootstrap class path not set in conjunction with -source 1.7
[javac] Note: Wrote file file:/compiler/androidX/build/ZDFGV/classes/simple_components.json
[javac] Note: Wrote file file:/compiler/androidX/build/ZDFGV/classes/simple_components.txt
[javac] Note: Wrote file file:/compiler/androidX/build/ZDFGV/classes/simple_components_build_info.json
[javac] Note: Wrote file file:/compiler/androidX/build/ZDFGV/classes/AutogeneratedOdeMessages.java
[javac] Note: Wrote file file:/compiler/androidX/build/ZDFGV/classes/ComponentsTranslation.java
[javac] /compiler/androidX/src/ZDFGV/com/jishnu/ForEachItemInTheList/ForEachItemInTheList.java:48: error: incompatible types: Object[] cannot be converted to ArrayList
[javac] ArrayList listColoums = Coloums.toArray();
[javac] ^
[javac] /compiler/androidX/src/ZDFGV/com/jishnu/ForEachItemInTheList/ForEachItemInTheList.java:49: error: incompatible types: Object[] cannot be converted to ArrayList
[javac] ArrayList listValues = values.toArray();
[javac] ^
[javac] /compiler/androidX/src/ZDFGV/com/jishnu/ForEachItemInTheList/ForEachItemInTheList.java:51: error: incompatible types: Object cannot be converted to String
[javac] for(String item : listColoums) {
[javac] ^
[javac] 3 errors

My Code

package com.jishnu.ForEachItemInTheList;

import android.app.Activity;
import android.content.Context;
import com.google.appinventor.components.annotations.*;
import com.google.appinventor.components.common.ComponentCategory;
import com.google.appinventor.components.runtime.AndroidNonvisibleComponent;
import com.google.appinventor.components.runtime.ComponentContainer;
import com.google.appinventor.components.runtime.EventDispatcher;
import java.util.ArrayList;
import com.google.appinventor.components.runtime.util.YailList;
@DesignerComponent(
        version = 1,
        description = "",
        category = ComponentCategory.EXTENSION,
        nonVisible = true,
        iconName = "")

@SimpleObject(external = true)
//Libraries
@UsesLibraries(libraries = "")
//Permissions
@UsesPermissions(permissionNames = "")

public class ForEachItemInTheList extends AndroidNonvisibleComponent {

    //Activity and Context
    private Context context;
    private Activity activity;

    public ForEachItemInTheList(ComponentContainer container){
        super(container.$form());
        this.activity = container.$context();
        this.context = container.$context();
    }

    @SimpleFunction(description = "Sample Function Generated by Niotron")
    public void TestFunction(){

    }

    @SimpleEvent(description = "Test Event Generated by Niotron")
    public void TestEvent(){
        EventDispatcher.dispatchEvent(this, "TestEvent");
    }
     @SimpleFunction(description = "Sample Function Generated by Niotron")
    public String Get(String tableName, YailList Coloums, YailList values) {
        ArrayList listColoums = Coloums.toArray();
        ArrayList listValues = values.toArray();
        String data ="";
        for(String item : listColoums) {  
            if (listColoums.indexOf(item) == listColoums.size()) {
                data = data + "\'" + item + "\'  = " + "\'" + listValues.get(listColoums.indexOf(item)) + "\'";
            } else {
                data = data + "\'" + item + "\'  = " + "\'" + listValues.get(listColoums.indexOf(item)) + "\',";
            }
        }
        return "INSERT INTO `" + tableName + "` SET " + data;
    }
}```
3 Likes

My Mistake, please remove comma in this line
import, java.util.ArrayList;

2 Likes

New Import

import java.util.List;
import java.util.Arrays;

Updated Code

    @SimpleFunction(description = "Sample Function Generated by Niotron")
    public String Get(String tableName, YailList Coloums, YailList values) {
        List<String> listColoums = Arrays.asList(Coloums.toStringArray());
        List<String> listValues = Arrays.asList(values.toStringArray());
        String data ="";
        for(String item : listColoums) {  
            if (listColoums.indexOf(item) == listColoums.size()) {
                data = data + "\'" + item + "\'  = " + "\'" + listValues.get(listColoums.indexOf(item)) + "\'";
            } else {
                data = data + "\'" + item + "\'  = " + "\'" + listValues.get(listColoums.indexOf(item)) + "\',";
            }
        }
        return "INSERT INTO `" + tableName + "` SET " + data;
    }
4 Likes
@SimpleFunction(description = "Sample Function Generated by Niotron")
    public String Get(String tableName, YailList Coloums, YailList values) {
        final List<String> listColoums = Arrays.asList(Coloums.toStringArray());
        final List<String> listValues = Arrays.asList(values.toStringArray());

        final StringBuilder data = new StringBuilder();
        for(String item : listColoums) {  
               final int pos = listColoums.indexOf(item);
               data.append("\'" + item + "\'  = " + "\'" + listValues.get(pos) + "\'");
               if (pos == listColoums.size()) {
                      data.appen(',');
               }
        }
        return "INSERT INTO `" + tableName + "` SET " + data;
    }

Don’t know what it does, simply optimized it :sweat:.

Always try to write less code as possible, use data types wisely, cache the positions/indexes to save memory. When the listColoums.indexOf is invoked, the class need to go through all the items till it finds the index which takes time.

Edited in the post editor itself, so there may be some silly mistake :stuck_out_tongue_closed_eyes:

5 Likes

Caught it ! :rofl:

You are right !! :laughing:

It should be data.append(',');

d missing :crazy_face: .

2 Likes

@Salman_Dev @Faraz_Firoz @Kumar @Aquib_Khan
With Your Help Its Working At Last Thanks

5 Likes